Skip to content

Commit 026ba02

Browse files
committed
Merge pull request #843 from jayapalu/SGIssue
Security group ingress/egress issues with xenserver 6.2There is issue with the xenserver 6.2 ipset type nethash. Fixed it by adding nethash for ipset version 6 which is xenserver 6.5. For ipset version 4.x use iptreemap. 1. Tested configuring egress/ingress rules. 2. Tested the traffic for the configured rules from the VM. * pr/843: CLOUDSTACK-8871: fixed issue with the xenserver 6.2 ipset nethash Signed-off-by: Rajani Karuturi <rajani.karuturi@accelerite.com>
2 parents 6a18cdd + 175c8d8 commit 026ba02

1 file changed

Lines changed: 19 additions & 6 deletions

File tree

  • scripts/vm/hypervisor/xenserver

scripts/vm/hypervisor/xenserver/vmops

Lines changed: 19 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -356,18 +356,29 @@ def allow_egress_traffic(session):
356356
return 'false'
357357
return 'true'
358358

359+
def getIpsetType():
360+
try:
361+
out = util.pread2(['/bin/bash', '-c', "ipset -v | awk '{print $5}'"])
362+
out.replace(".","")
363+
if int(out) < 6:
364+
return 'iptreemap'
365+
else:
366+
return 'nethash'
367+
except:
368+
return 'iptreemap'
359369

360370
def ipset(ipsetname, proto, start, end, cidrs):
371+
type = getIpsetType()
361372
try:
362-
util.pread2(['ipset', '-N', ipsetname, 'nethash'])
373+
util.pread2(['ipset', '-N', ipsetname, type])
363374
except:
364375
logging.debug("ipset chain already exists: " + ipsetname)
365376

366377
result = True
367378
ipsettmp = ''.join(''.join(ipsetname.split('-')).split('_')) + str(int(time.time()) % 1000)
368379

369380
try:
370-
util.pread2(['ipset', '-N', ipsettmp, 'nethash'])
381+
util.pread2(['ipset', '-N', ipsettmp, type])
371382
except:
372383
logging.debug("Failed to create temp ipset, reusing old name= " + ipsettmp)
373384
try:
@@ -396,7 +407,7 @@ def ipset(ipsetname, proto, start, end, cidrs):
396407
# the old ipset entry could be of iphash type, try to delete and recreate
397408
try:
398409
util.pread2(['ipset', '-X', ipsetname])
399-
util.pread2(['ipset', '-N', ipsetname, 'nethash'])
410+
util.pread2(['ipset', '-N', ipsetname, type])
400411
util.pread2(['ipset', '-W', ipsettmp, ipsetname])
401412
except:
402413
logging.debug("Failed to swap ipset " + ipsetname)
@@ -672,14 +683,15 @@ def default_network_rules_systemvm(session, args):
672683
@echo
673684
def create_ipset_forvm (ipsetname):
674685
result = True
686+
type = getIpsetType()
675687
try:
676688
logging.debug("Creating ipset chain .... " + ipsetname)
677689
util.pread2(['ipset', '-F', ipsetname])
678690
util.pread2(['ipset', '-X', ipsetname])
679-
util.pread2(['ipset', '-N', ipsetname, 'iphash'])
691+
util.pread2(['ipset', '-N', ipsetname, type])
680692
except:
681693
logging.debug("ipset chain not exists creating.... " + ipsetname)
682-
util.pread2(['ipset', '-N', ipsetname, 'iphash'])
694+
util.pread2(['ipset', '-N', ipsetname, type])
683695

684696
return result
685697

@@ -1252,9 +1264,10 @@ def inflate_rules (zipped):
12521264

12531265
@echo
12541266
def cache_ipset_keyword():
1267+
type = getIpsetType()
12551268
tmpname = 'ipsetqzvxtmp'
12561269
try:
1257-
util.pread2(['/bin/bash', '-c', 'ipset -N ' + tmpname + ' iphash'])
1270+
util.pread2(['/bin/bash', '-c', 'ipset -N ' + tmpname + type])
12581271
except:
12591272
util.pread2(['/bin/bash', '-c', 'ipset -F ' + tmpname])
12601273

0 commit comments

Comments
 (0)