本文整理汇总了Python中pyroute2.IPRoute.get_rules方法的典型用法代码示例。如果您正苦于以下问题:Python IPRoute.get_rules方法的具体用法?Python IPRoute.get_rules怎么用?Python IPRoute.get_rules使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类pyroute2.IPRoute
的用法示例。
在下文中一共展示了IPRoute.get_rules方法的8个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Python代码示例。
示例1: TestIPRoute
# 需要导入模块: from pyroute2 import IPRoute [as 别名]
# 或者: from pyroute2.IPRoute import get_rules [as 别名]
#.........这里部分代码省略.........
self.ip.addr('add', self.ifaces[0], address='172.16.0.2', mask=24)
self.ip.route('add',
prefix='172.16.1.0',
mask=24,
gateway='172.16.0.1',
table=2048)
assert grep('ip route show table 2048',
pattern='172.16.1.0/24.*172.16.0.1')
remove_link('bala')
def test_symbolic_flags_ifaddrmsg(self):
require_user('root')
self.ip.link('set', index=self.ifaces[0], state='up')
self.ip.addr('add', self.ifaces[0], '172.16.1.1', 24)
addr = [x for x in self.ip.get_addr()
if x.get_attr('IFA_LOCAL') == '172.16.1.1'][0]
assert 'IFA_F_PERMANENT' in addr.flags2names(addr['flags'])
def test_symbolic_flags_ifinfmsg(self):
require_user('root')
self.ip.link('set', index=self.ifaces[0], flags=['IFF_UP'])
iface = self.ip.get_links(self.ifaces[0])[0]
assert iface['flags'] & 1
assert 'IFF_UP' in iface.flags2names(iface['flags'])
self.ip.link('set', index=self.ifaces[0], flags=['!IFF_UP'])
assert not (self.ip.get_links(self.ifaces[0])[0]['flags'] & 1)
def test_updown_link(self):
require_user('root')
try:
self.ip.link_up(*self.ifaces)
except NetlinkError:
pass
assert self.ip.get_links(*self.ifaces)[0]['flags'] & 1
try:
self.ip.link_down(*self.ifaces)
except NetlinkError:
pass
assert not (self.ip.get_links(*self.ifaces)[0]['flags'] & 1)
def test_callbacks_positive(self):
require_user('root')
dev = self.ifaces[0]
self.cb_counter = 0
self.ip.register_callback(_callback,
lambda x: x.get('index', None) == dev,
(self, ))
self.test_updown_link()
assert self.cb_counter > 0
self.ip.unregister_callback(_callback)
def test_callbacks_negative(self):
require_user('root')
self.cb_counter = 0
self.ip.register_callback(_callback,
lambda x: x.get('index', None) == -1,
(self, ))
self.test_updown_link()
assert self.cb_counter == 0
self.ip.unregister_callback(_callback)
def test_rename_link(self):
require_user('root')
dev = self.ifaces[0]
try:
self.ip.link_rename(dev, 'bala')
except NetlinkError:
pass
assert len(self.ip.link_lookup(ifname='bala')) == 1
try:
self.ip.link_rename(dev, self.dev)
except NetlinkError:
pass
assert len(self.ip.link_lookup(ifname=self.dev)) == 1
def test_rules(self):
assert len(get_ip_rules('-4')) == \
len(self.ip.get_rules(socket.AF_INET))
assert len(get_ip_rules('-6')) == \
len(self.ip.get_rules(socket.AF_INET6))
def test_addr(self):
assert len(get_ip_addr()) == len(self.ip.get_addr())
def test_links(self):
assert len(get_ip_link()) == len(self.ip.get_links())
def test_one_link(self):
lo = self.ip.get_links(1)[0]
assert lo.get_attr('IFLA_IFNAME') == 'lo'
def test_default_routes(self):
assert len(get_ip_default_routes()) == \
len(self.ip.get_default_routes(family=socket.AF_INET, table=254))
def test_routes(self):
assert len(get_ip_route()) == \
len(self.ip.get_routes(family=socket.AF_INET, table=255))
示例2: TestIPRoute
# 需要导入模块: from pyroute2 import IPRoute [as 别名]
# 或者: from pyroute2.IPRoute import get_rules [as 别名]
class TestIPRoute(object):
def setup(self):
self.ip = IPRoute()
try:
self.dev, idx = self.create()
self.ifaces = [idx]
except IndexError:
pass
def create(self, kind='dummy'):
name = uifname()
create_link(name, kind=kind)
idx = self.ip.link_lookup(ifname=name)[0]
return (name, idx)
def teardown(self):
if hasattr(self, 'ifaces'):
for dev in self.ifaces:
try:
self.ip.link('delete', index=dev)
except:
pass
self.ip.close()
def _test_nla_operators(self):
require_user('root')
self.ip.addr('add', self.ifaces[0], address='172.16.0.1', mask=24)
self.ip.addr('add', self.ifaces[0], address='172.16.0.2', mask=24)
r = [x for x in self.ip.get_addr() if x['index'] == self.ifaces[0]]
complement = r[0] - r[1]
intersection = r[0] & r[1]
assert complement.get_attr('IFA_ADDRESS') == '172.16.0.1'
assert complement.get_attr('IFA_LABEL') is None
assert complement['prefixlen'] == 0
assert complement['index'] == 0
assert intersection.get_attr('IFA_ADDRESS') is None
assert intersection.get_attr('IFA_LABEL') == self.dev
assert intersection['prefixlen'] == 24
assert intersection['index'] == self.ifaces[0]
def test_addr_add(self):
require_user('root')
self.ip.addr('add', self.ifaces[0], address='172.16.0.1', mask=24)
assert '172.16.0.1/24' in get_ip_addr()
def test_flush_addr(self):
require_user('root')
self.ip.addr('add', self.ifaces[0], address='172.16.0.1', mask=24)
self.ip.addr('add', self.ifaces[0], address='172.16.0.2', mask=24)
self.ip.addr('add', self.ifaces[0], address='172.16.1.1', mask=24)
self.ip.addr('add', self.ifaces[0], address='172.16.1.2', mask=24)
assert len(self.ip.get_addr(index=self.ifaces[0],
family=socket.AF_INET)) == 4
self.ip.flush_addr(index=self.ifaces[0])
assert len(self.ip.get_addr(index=self.ifaces[0],
family=socket.AF_INET)) == 0
def test_flush_rules(self):
require_user('root')
init = len(self.ip.get_rules(family=socket.AF_INET))
assert len(self.ip.get_rules(priority=lambda x: 100 < x < 500)) == 0
self.ip.rule('add', table=10, priority=110)
self.ip.rule('add', table=15, priority=150, action='FR_ACT_PROHIBIT')
self.ip.rule('add', table=20, priority=200, src='172.16.200.1')
self.ip.rule('add', table=25, priority=250, dst='172.16.250.1')
assert len(self.ip.get_rules(priority=lambda x: 100 < x < 500)) == 4
assert len(self.ip.get_rules(src='172.16.200.1')) == 1
assert len(self.ip.get_rules(dst='172.16.250.1')) == 1
self.ip.flush_rules(family=socket.AF_INET,
priority=lambda x: 100 < x < 500)
assert len(self.ip.get_rules(priority=lambda x: 100 < x < 500)) == 0
assert len(self.ip.get_rules(src='172.16.200.1')) == 0
assert len(self.ip.get_rules(dst='172.16.250.1')) == 0
assert len(self.ip.get_rules(family=socket.AF_INET)) == init
def test_rules_deprecated(self):
require_user('root')
init = len(self.ip.get_rules(family=socket.AF_INET))
assert len(self.ip.get_rules(priority=lambda x: 100 < x < 500)) == 0
self.ip.rule('add', 10, 110)
self.ip.rule('add', 15, 150, 'FR_ACT_PROHIBIT')
assert len(self.ip.get_rules(priority=lambda x: 100 < x < 500)) == 2
self.ip.flush_rules(family=socket.AF_INET,
priority=lambda x: 100 < x < 500)
assert len(self.ip.get_rules(priority=lambda x: 100 < x < 500)) == 0
assert len(self.ip.get_rules(family=socket.AF_INET)) == init
def test_addr_filter(self):
require_user('root')
self.ip.addr('add',
index=self.ifaces[0],
address='172.16.0.1',
prefixlen=24,
broadcast='172.16.0.255')
self.ip.addr('add',
index=self.ifaces[0],
address='172.16.0.2',
#.........这里部分代码省略.........
示例3: TestIPRoute
# 需要导入模块: from pyroute2 import IPRoute [as 别名]
# 或者: from pyroute2.IPRoute import get_rules [as 别名]
#.........这里部分代码省略.........
broadcast=ifaddr2)
assert ifaddr2 in get_ip_brd()
def test_addr_broadcast_default(self):
require_user('root')
ifaddr1 = self.ifaddr() # -> 255
ifaddr2 = self.ifaddr() # -> 254
self.ip.addr('add', self.ifaces[0],
address=ifaddr2,
mask=24,
broadcast=True)
assert ifaddr1 in get_ip_brd()
def test_flush_addr(self):
require_user('root')
ifaddr1 = self.ifaddr(0)
ifaddr2 = self.ifaddr(0)
ifaddr3 = self.ifaddr(1)
ifaddr4 = self.ifaddr(1)
self.ip.addr('add', self.ifaces[0], address=ifaddr1, mask=24)
self.ip.addr('add', self.ifaces[0], address=ifaddr2, mask=24)
self.ip.addr('add', self.ifaces[0], address=ifaddr3, mask=24)
self.ip.addr('add', self.ifaces[0], address=ifaddr4, mask=24)
assert len(self.ip.get_addr(index=self.ifaces[0],
family=socket.AF_INET)) == 4
self.ip.flush_addr(index=self.ifaces[0])
assert len(self.ip.get_addr(index=self.ifaces[0],
family=socket.AF_INET)) == 0
def test_flush_rules(self):
require_user('root')
ifaddr1 = self.ifaddr(0)
ifaddr2 = self.ifaddr(1)
init = len(self.ip.get_rules(family=socket.AF_INET))
assert len(self.ip.get_rules(priority=lambda x: 100 < x < 500)) == 0
self.ip.rule('add', table=10, priority=110)
self.ip.rule('add', table=15, priority=150, action='FR_ACT_PROHIBIT')
self.ip.rule('add', table=20, priority=200, src=ifaddr1)
self.ip.rule('add', table=25, priority=250, dst=ifaddr2)
assert len(self.ip.get_rules(priority=lambda x: 100 < x < 500)) == 4
assert len(self.ip.get_rules(src=ifaddr1)) == 1
assert len(self.ip.get_rules(dst=ifaddr2)) == 1
self.ip.flush_rules(family=socket.AF_INET,
priority=lambda x: 100 < x < 500)
assert len(self.ip.get_rules(priority=lambda x: 100 < x < 500)) == 0
assert len(self.ip.get_rules(src=ifaddr1)) == 0
assert len(self.ip.get_rules(dst=ifaddr2)) == 0
assert len(self.ip.get_rules(family=socket.AF_INET)) == init
def test_rules_deprecated(self):
require_user('root')
init = len(self.ip.get_rules(family=socket.AF_INET))
assert len(self.ip.get_rules(priority=lambda x: 100 < x < 500)) == 0
self.ip.rule('add', 10, 110)
self.ip.rule('add', 15, 150, 'FR_ACT_PROHIBIT')
assert len(self.ip.get_rules(priority=lambda x: 100 < x < 500)) == 2
self.ip.flush_rules(family=socket.AF_INET,
priority=lambda x: 100 < x < 500)
assert len(self.ip.get_rules(priority=lambda x: 100 < x < 500)) == 0
assert len(self.ip.get_rules(family=socket.AF_INET)) == init
def test_match_callable(self):
assert len(self.ip.get_links(match=partial(lambda x: x))) > 0
def test_addr_filter(self):
require_user('root')
示例4: TestRule
# 需要导入模块: from pyroute2 import IPRoute [as 别名]
# 或者: from pyroute2.IPRoute import get_rules [as 别名]
class TestRule(object):
def setup(self):
require_user('root')
self.ip = IPRoute()
self.ifname = uifname()
self.ip.link('add', ifname=self.ifname, kind='dummy')
self.interface = self.ip.link_lookup(ifname=self.ifname)[0]
def teardown(self):
self.ip.link('delete', index=self.interface)
self.ip.close()
def test_basic(self):
self.ip.rule('add', 10, 32000)
assert len([x for x in self.ip.get_rules() if
x.get_attr('FRA_PRIORITY') == 32000 and
x.get_attr('FRA_TABLE') == 10]) == 1
self.ip.rule('delete', 10, 32000)
assert len([x for x in self.ip.get_rules() if
x.get_attr('FRA_PRIORITY') == 32000 and
x.get_attr('FRA_TABLE') == 10]) == 0
def test_fwmark(self):
self.ip.rule('add', 15, 32006, fwmark=10)
assert len([x for x in self.ip.get_rules() if
x.get_attr('FRA_PRIORITY') == 32006 and
x.get_attr('FRA_TABLE') == 15 and
x.get_attr('FRA_FWMARK')]) == 1
self.ip.rule('delete', 15, 32006, fwmark=10)
assert len([x for x in self.ip.get_rules() if
x.get_attr('FRA_PRIORITY') == 32006 and
x.get_attr('FRA_TABLE') == 15 and
x.get_attr('FRA_FWMARK')]) == 0
def test_fwmark_mask_normalized(self):
self.ip.rule('add', 15, 32006, fwmark=10, fwmask=20)
assert len([x for x in self.ip.get_rules() if
x.get_attr('FRA_PRIORITY') == 32006 and
x.get_attr('FRA_TABLE') == 15 and
x.get_attr('FRA_FWMARK') and
x.get_attr('FRA_FWMASK')]) == 1
self.ip.rule('delete', 15, 32006, fwmark=10, fwmask=20)
assert len([x for x in self.ip.get_rules() if
x.get_attr('FRA_PRIORITY') == 32006 and
x.get_attr('FRA_TABLE') == 15 and
x.get_attr('FRA_FWMARK') and
x.get_attr('FRA_FWMASK')]) == 0
def test_fwmark_mask_raw(self):
self.ip.rule('add', 15, 32006, fwmark=10, FRA_FWMASK=20)
assert len([x for x in self.ip.get_rules() if
x.get_attr('FRA_PRIORITY') == 32006 and
x.get_attr('FRA_TABLE') == 15 and
x.get_attr('FRA_FWMARK') and
x.get_attr('FRA_FWMASK')]) == 1
self.ip.rule('delete', 15, 32006, fwmark=10, FRA_FWMASK=20)
assert len([x for x in self.ip.get_rules() if
x.get_attr('FRA_PRIORITY') == 32006 and
x.get_attr('FRA_TABLE') == 15 and
x.get_attr('FRA_FWMARK') and
x.get_attr('FRA_FWMASK')]) == 0
def test_bad_table(self):
try:
self.ip.rule('add', -1, 32000)
except Exception:
pass
def test_big_table(self):
self.ip.rule('add', 1024, 32000)
assert len([x for x in self.ip.get_rules() if
x.get_attr('FRA_PRIORITY') == 32000 and
x.get_attr('FRA_TABLE') == 1024]) == 1
self.ip.rule('delete', 1024, 32000)
assert len([x for x in self.ip.get_rules() if
x.get_attr('FRA_PRIORITY') == 32000 and
x.get_attr('FRA_TABLE') == 1024]) == 0
def test_src_dst(self):
self.ip.rule('add', 17, 32005,
src='10.0.0.0', src_len=24,
dst='10.1.0.0', dst_len=24)
assert len([x for x in self.ip.get_rules() if
x.get_attr('FRA_PRIORITY') == 32005 and
x.get_attr('FRA_TABLE') == 17 and
x.get_attr('FRA_SRC') == '10.0.0.0' and
x.get_attr('FRA_DST') == '10.1.0.0' and
x['src_len'] == 24 and
x['dst_len'] == 24]) == 1
self.ip.rule('delete', 17, 32005,
src='10.0.0.0', src_len=24,
dst='10.1.0.0', dst_len=24)
assert len([x for x in self.ip.get_rules() if
x.get_attr('FRA_PRIORITY') == 32005 and
x.get_attr('FRA_TABLE') == 17 and
x.get_attr('FRA_SRC') == '10.0.0.0' and
x.get_attr('FRA_DST') == '10.1.0.0' and
x['src_len'] == 24 and
x['dst_len'] == 24]) == 0
示例5: TestData
# 需要导入模块: from pyroute2 import IPRoute [as 别名]
# 或者: from pyroute2.IPRoute import get_rules [as 别名]
class TestData(object):
def setup(self):
create_link('dummyX', 'dummy')
self.release = Event()
self.ip = IPRoute()
self.dev = self.ip.link_lookup(ifname='dummyX')
def teardown(self):
self.ip.release()
self.release.set()
remove_link('dummyX')
remove_link('bala')
def test_add_addr(self):
require_user('root')
dev = self.dev[0]
self.ip.addr('add', dev, address='172.16.0.1', mask=24)
assert '172.16.0.1/24' in get_ip_addr()
def test_remove_link(self):
require_user('root')
create_link('bala', 'dummy')
dev = self.ip.link_lookup(ifname='bala')[0]
try:
self.ip.link_remove(dev)
except NetlinkError:
pass
assert len(self.ip.link_lookup(ifname='bala')) == 0
def test_route(self):
require_user('root')
create_link('bala', 'dummy')
dev = self.ip.link_lookup(ifname='bala')[0]
self.ip.link('set', index=dev, state='up')
self.ip.addr('add', dev, address='172.16.0.2', mask=24)
self.ip.route('add',
prefix='172.16.1.0',
mask=24,
gateway='172.16.0.1')
assert grep('ip route show', pattern='172.16.1.0/24.*172.16.0.1')
remove_link('bala')
def test_updown_link(self):
require_user('root')
dev = self.dev[0]
assert not (self.ip.get_links(dev)[0]['flags'] & 1)
try:
self.ip.link_up(dev)
except NetlinkError:
pass
assert self.ip.get_links(dev)[0]['flags'] & 1
try:
self.ip.link_down(dev)
except NetlinkError:
pass
assert not (self.ip.get_links(dev)[0]['flags'] & 1)
def test_callbacks_positive(self):
require_user('root')
dev = self.dev[0]
self.cb_counter = 0
self.ip.register_callback(_callback,
lambda e, x: x.get('index', None) == dev,
(self, ))
self.test_updown_link()
assert self.cb_counter > 0
self.ip.unregister_callback(_callback)
def test_callbacks_negative(self):
require_user('root')
self.cb_counter = 0
self.ip.register_callback(_callback,
lambda e, x: x.get('index', None) == 'bala',
(self, ))
self.test_updown_link()
assert self.cb_counter == 0
self.ip.unregister_callback(_callback)
def test_rename_link(self):
require_user('root')
dev = self.dev[0]
try:
self.ip.link_rename(dev, 'bala')
except NetlinkError:
pass
assert len(self.ip.link_lookup(ifname='bala')) == 1
try:
self.ip.link_rename(dev, 'dummyX')
except NetlinkError:
pass
assert len(self.ip.link_lookup(ifname='dummyX')) == 1
def test_rules(self):
assert len(get_ip_rules('-4')) == \
len(self.ip.get_rules(socket.AF_INET))
assert len(get_ip_rules('-6')) == \
len(self.ip.get_rules(socket.AF_INET6))
#.........这里部分代码省略.........
示例6: TestData
# 需要导入模块: from pyroute2 import IPRoute [as 别名]
# 或者: from pyroute2.IPRoute import get_rules [as 别名]
#.........这里部分代码省略.........
assert len(self.ip.link_lookup(ifname='bala')) == 0
def test_get_route(self):
if not self.ip.get_default_routes(table=254):
return
rts = self.ip.get_routes(family=socket.AF_INET,
dst='8.8.8.8',
table=254)
assert len(rts) > 0
def test_route_table_2048(self):
require_user('root')
create_link('bala', 'dummy')
dev = self.ip.link_lookup(ifname='bala')[0]
self.ip.link('set', index=dev, state='up')
self.ip.addr('add', dev, address='172.16.0.2', mask=24)
self.ip.route('add',
prefix='172.16.1.0',
mask=24,
gateway='172.16.0.1',
table=2048)
assert grep('ip route show table 2048',
pattern='172.16.1.0/24.*172.16.0.1')
remove_link('bala')
def test_updown_link(self):
require_user('root')
dev = self.dev[0]
assert not (self.ip.get_links(dev)[0]['flags'] & 1)
try:
self.ip.link_up(dev)
except NetlinkError:
pass
assert self.ip.get_links(dev)[0]['flags'] & 1
try:
self.ip.link_down(dev)
except NetlinkError:
pass
assert not (self.ip.get_links(dev)[0]['flags'] & 1)
def test_callbacks_positive(self):
require_user('root')
dev = self.dev[0]
self.cb_counter = 0
self.ip.register_callback(_callback,
lambda e, x: x.get('index', None) == dev,
(self, ))
self.test_updown_link()
assert self.cb_counter > 0
self.ip.unregister_callback(_callback)
def test_callbacks_negative(self):
require_user('root')
self.cb_counter = 0
self.ip.register_callback(_callback,
lambda e, x: x.get('index', None) == 'bala',
(self, ))
self.test_updown_link()
assert self.cb_counter == 0
self.ip.unregister_callback(_callback)
def test_rename_link(self):
require_user('root')
dev = self.dev[0]
try:
self.ip.link_rename(dev, 'bala')
except NetlinkError:
pass
assert len(self.ip.link_lookup(ifname='bala')) == 1
try:
self.ip.link_rename(dev, 'dummyX')
except NetlinkError:
pass
assert len(self.ip.link_lookup(ifname='dummyX')) == 1
def test_rules(self):
assert len(get_ip_rules('-4')) == \
len(self.ip.get_rules(socket.AF_INET))
assert len(get_ip_rules('-6')) == \
len(self.ip.get_rules(socket.AF_INET6))
def test_addr(self):
assert len(get_ip_addr()) == len(self.ip.get_addr())
def test_links(self):
assert len(get_ip_link()) == len(self.ip.get_links())
def test_one_link(self):
lo = self.ip.get_links(1)[0]
assert lo.get_attr('IFLA_IFNAME') == 'lo'
def test_default_routes(self):
assert len(get_ip_default_routes()) == \
len(self.ip.get_default_routes(family=socket.AF_INET, table=254))
def test_routes(self):
assert len(get_ip_route()) == \
len(self.ip.get_routes(family=socket.AF_INET, table=255))
示例7: TestIPRoute
# 需要导入模块: from pyroute2 import IPRoute [as 别名]
# 或者: from pyroute2.IPRoute import get_rules [as 别名]
#.........这里部分代码省略.........
assert address == '172.16.0.2'
assert local == '172.16.0.1'
def test_addr_broadcast(self):
require_user('root')
self.ip.addr('add', self.ifaces[0],
address='172.16.0.1',
mask=24,
broadcast='172.16.0.250')
assert '172.16.0.250' in get_ip_brd()
def test_addr_broadcast_default(self):
require_user('root')
self.ip.addr('add', self.ifaces[0],
address='172.16.0.1',
mask=24,
broadcast=True)
assert '172.16.0.255' in get_ip_brd()
def test_flush_addr(self):
require_user('root')
self.ip.addr('add', self.ifaces[0], address='172.16.0.1', mask=24)
self.ip.addr('add', self.ifaces[0], address='172.16.0.2', mask=24)
self.ip.addr('add', self.ifaces[0], address='172.16.1.1', mask=24)
self.ip.addr('add', self.ifaces[0], address='172.16.1.2', mask=24)
assert len(self.ip.get_addr(index=self.ifaces[0],
family=socket.AF_INET)) == 4
self.ip.flush_addr(index=self.ifaces[0])
assert len(self.ip.get_addr(index=self.ifaces[0],
family=socket.AF_INET)) == 0
def test_flush_rules(self):
require_user('root')
init = len(self.ip.get_rules(family=socket.AF_INET))
assert len(self.ip.get_rules(priority=lambda x: 100 < x < 500)) == 0
self.ip.rule('add', table=10, priority=110)
self.ip.rule('add', table=15, priority=150, action='FR_ACT_PROHIBIT')
self.ip.rule('add', table=20, priority=200, src='172.16.200.1')
self.ip.rule('add', table=25, priority=250, dst='172.16.250.1')
assert len(self.ip.get_rules(priority=lambda x: 100 < x < 500)) == 4
assert len(self.ip.get_rules(src='172.16.200.1')) == 1
assert len(self.ip.get_rules(dst='172.16.250.1')) == 1
self.ip.flush_rules(family=socket.AF_INET,
priority=lambda x: 100 < x < 500)
assert len(self.ip.get_rules(priority=lambda x: 100 < x < 500)) == 0
assert len(self.ip.get_rules(src='172.16.200.1')) == 0
assert len(self.ip.get_rules(dst='172.16.250.1')) == 0
assert len(self.ip.get_rules(family=socket.AF_INET)) == init
def test_rules_deprecated(self):
require_user('root')
init = len(self.ip.get_rules(family=socket.AF_INET))
assert len(self.ip.get_rules(priority=lambda x: 100 < x < 500)) == 0
self.ip.rule('add', 10, 110)
self.ip.rule('add', 15, 150, 'FR_ACT_PROHIBIT')
assert len(self.ip.get_rules(priority=lambda x: 100 < x < 500)) == 2
self.ip.flush_rules(family=socket.AF_INET,
priority=lambda x: 100 < x < 500)
assert len(self.ip.get_rules(priority=lambda x: 100 < x < 500)) == 0
assert len(self.ip.get_rules(family=socket.AF_INET)) == init
def test_addr_filter(self):
require_user('root')
self.ip.addr('add',
index=self.ifaces[0],
address='172.16.0.1',
示例8: TestRule
# 需要导入模块: from pyroute2 import IPRoute [as 别名]
# 或者: from pyroute2.IPRoute import get_rules [as 别名]
class TestRule(object):
def setup(self):
require_user('root')
self.ip = IPRoute()
self.ip.link('add',
index=0,
ifname='dummyX',
linkinfo={'attrs': [['IFLA_INFO_KIND', 'dummy']]})
self.interface = self.ip.link_lookup(ifname='dummyX')[0]
def teardown(self):
self.ip.link('delete', index=self.interface)
self.ip.close()
def test_basic(self):
self.ip.rule('add', 10, 32000)
assert len([x for x in self.ip.get_rules() if
x.get_attr('RTA_PRIORITY') == 32000 and
x.get_attr('RTA_TABLE') == 10]) == 1
self.ip.rule('delete', 10, 32000)
assert len([x for x in self.ip.get_rules() if
x.get_attr('RTA_PRIORITY') == 32000 and
x.get_attr('RTA_TABLE') == 10]) == 0
def test_fwmark(self):
self.ip.rule('add', 15, 32006, fwmark=10)
assert len([x for x in self.ip.get_rules() if
x.get_attr('RTA_PRIORITY') == 32006 and
x.get_attr('RTA_TABLE') == 15 and
x.get_attr('RTA_PROTOINFO')]) == 1
self.ip.rule('delete', 15, 32006, fwmark=10)
assert len([x for x in self.ip.get_rules() if
x.get_attr('RTA_PRIORITY') == 32006 and
x.get_attr('RTA_TABLE') == 15 and
x.get_attr('RTA_PROTOINFO')]) == 0
def test_bad_table(self):
try:
self.ip.rule('add', -1, 32000)
except ValueError:
pass
def test_big_table(self):
self.ip.rule('add', 1024, 32000)
assert len([x for x in self.ip.get_rules() if
x.get_attr('RTA_PRIORITY') == 32000 and
x.get_attr('RTA_TABLE') == 1024]) == 1
self.ip.rule('delete', 1024, 32000)
assert len([x for x in self.ip.get_rules() if
x.get_attr('RTA_PRIORITY') == 32000 and
x.get_attr('RTA_TABLE') == 1024]) == 0
def test_src_dst(self):
self.ip.rule('add', 17, 32005,
src='10.0.0.0', src_len=24,
dst='10.1.0.0', dst_len=24)
assert len([x for x in self.ip.get_rules() if
x.get_attr('RTA_PRIORITY') == 32005 and
x.get_attr('RTA_TABLE') == 17 and
x.get_attr('RTA_SRC') == '10.0.0.0' and
x.get_attr('RTA_DST') == '10.1.0.0' and
x['src_len'] == 24 and
x['dst_len'] == 24]) == 1
self.ip.rule('delete', 17, 32005,
src='10.0.0.0', src_len=24,
dst='10.1.0.0', dst_len=24)
assert len([x for x in self.ip.get_rules() if
x.get_attr('RTA_PRIORITY') == 32005 and
x.get_attr('RTA_TABLE') == 17 and
x.get_attr('RTA_SRC') == '10.0.0.0' and
x.get_attr('RTA_DST') == '10.1.0.0' and
x['src_len'] == 24 and
x['dst_len'] == 24]) == 0