@@ -405,6 +405,9 @@ def can_bridge_firewall(session, args):
405405 allow_egress_traffic (session )
406406 if not os .path .exists ('/var/run/cloud' ):
407407 os .makedirs ('/var/run/cloud' )
408+ if not os .path .exists ('/var/cache/cloud' ):
409+ os .makedirs ('/var/cache/cloud' )
410+ get_ipset_keyword ()
408411
409412 cleanup_rules_for_dead_vms (session )
410413 cleanup_rules (session , args )
@@ -1152,9 +1155,8 @@ def inflate_rules (zipped):
11521155 return zlib .decompress (base64 .b64decode (zipped ))
11531156
11541157@echo
1155- def get_ipset_keyword ():
1158+ def cache_ipset_keyword ():
11561159 tmpname = 'ipsetqzvxtmp'
1157- keyword = 'match-set'
11581160 try :
11591161 util .pread2 (['/bin/bash' , '-c' , 'ipset -N ' + tmpname + ' iptreemap' ])
11601162 except :
@@ -1171,6 +1173,32 @@ def get_ipset_keyword():
11711173 util .pread2 (['/bin/bash' , '-c' , 'ipset -X ' + tmpname ])
11721174 except :
11731175 pass
1176+
1177+ cachefile = "/var/cache/cloud/ipset.keyword"
1178+ util .SMlog ("Writing ipset keyword to " + cachefile )
1179+ cachef = open (cachefile , 'w' )
1180+ try :
1181+ cachef .write (keyword )
1182+ cachef .write ('\n ' )
1183+ except :
1184+ util .SMlog ("Failed to write to cache file " + cachef )
1185+
1186+ cachef .close ()
1187+ return keyword
1188+
1189+ @echo
1190+ def get_ipset_keyword ():
1191+ cachefile = "/var/cache/cloud/ipset.keyword"
1192+ keyword = 'match-set'
1193+
1194+ if not os .path .exists (cachefile ):
1195+ util .SMlog ("Failed to find ipset keyword cachefile %s" % cachefile )
1196+ keyword = cache_ipset_keyword ()
1197+ else :
1198+ lines = (line .rstrip () for line in open (cachefile ))
1199+ for line in lines :
1200+ keyword = line
1201+ break
11741202
11751203 return keyword
11761204
0 commit comments