@@ -1151,6 +1151,29 @@ def remove_rule_log_for_vm(vmName):
11511151def inflate_rules (zipped ):
11521152 return zlib .decompress (base64 .b64decode (zipped ))
11531153
1154+ @echo
1155+ def get_ipset_keyword ():
1156+ tmpname = 'ipsetqzvxtmp'
1157+ keyword = 'match-set'
1158+ try :
1159+ util .pread2 (['/bin/bash' , '-c' , 'ipset -N ' + tmpname + ' iptreemap' ])
1160+ except :
1161+ util .pread2 (['/bin/bash' , '-c' , 'ipset -F ' + tmpname ])
1162+
1163+ try :
1164+ util .pread2 (['/bin/bash' , '-c' , 'iptables -A INPUT -m set --set ' + tmpname + ' src' + ' -j ACCEPT' ])
1165+ util .pread2 (['/bin/bash' , '-c' , 'iptables -D INPUT -m set --set ' + tmpname + ' src' + ' -j ACCEPT' ])
1166+ keyword = 'set'
1167+ except :
1168+ keyword = 'match-set'
1169+
1170+ try :
1171+ util .pread2 (['/bin/bash' , '-c' , 'ipset -X ' + tmpname ])
1172+ except :
1173+ pass
1174+
1175+ return keyword
1176+
11541177@echo
11551178def network_rules (session , args ):
11561179 try :
@@ -1214,7 +1237,7 @@ def network_rules(session, args):
12141237 rules = args .pop ('rules' )
12151238 if deflated .lower () == 'true' :
12161239 rules = inflate_rules (rules )
1217-
1240+ keyword = '--' + get_ipset_keyword ()
12181241 lines = rules .split (' ' )
12191242
12201243 util .SMlog ("Programming network rules for vm %s seqno=%s numrules=%s signature=%s guestIp=%s," \
@@ -1258,14 +1281,14 @@ def network_rules(session, args):
12581281 util .SMlog (" failed to create ipset for rule " + str (tokens ))
12591282
12601283 if protocol == 'all' :
1261- iptables = ['iptables' , '-I' , vmchain , '-m' , 'state' , '--state' , 'NEW' , '-m' , 'set' , '--match-set' , ipsetname , direction , '-j' , action ]
1284+ iptables = ['iptables' , '-I' , vmchain , '-m' , 'state' , '--state' , 'NEW' , '-m' , 'set' , keyword , ipsetname , direction , '-j' , action ]
12621285 elif protocol != 'icmp' :
1263- iptables = ['iptables' , '-I' , vmchain , '-p' , protocol , '-m' , protocol , '--dport' , range , '-m' , 'state' , '--state' , 'NEW' , '-m' , 'set' , '--match-set' , ipsetname , direction , '-j' , action ]
1286+ iptables = ['iptables' , '-I' , vmchain , '-p' , protocol , '-m' , protocol , '--dport' , range , '-m' , 'state' , '--state' , 'NEW' , '-m' , 'set' , keyword , ipsetname , direction , '-j' , action ]
12641287 else :
12651288 range = start + "/" + end
12661289 if start == "-1" :
12671290 range = "any"
1268- iptables = ['iptables' , '-I' , vmchain , '-p' , 'icmp' , '--icmp-type' , range , '-m' , 'set' , '--match-set' , ipsetname , direction , '-j' , action ]
1291+ iptables = ['iptables' , '-I' , vmchain , '-p' , 'icmp' , '--icmp-type' , range , '-m' , 'set' , keyword , ipsetname , keyword , '-j' , action ]
12691292 cmds .append (iptables )
12701293 util .SMlog (iptables )
12711294
0 commit comments