Skip to content

Commit c05903b

Browse files
author
Chiradeep Vittal
committed
bug 11302: support new CSP for SP2.
conditional check : --match-set vs --set forgot to merge this in from 2.2.y
1 parent d12343b commit c05903b

1 file changed

Lines changed: 27 additions & 4 deletions

File tree

  • scripts/vm/hypervisor/xenserver

scripts/vm/hypervisor/xenserver/vmops

Lines changed: 27 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1151,6 +1151,29 @@ def remove_rule_log_for_vm(vmName):
11511151
def 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
11551178
def 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

Comments
 (0)