PNG IHDR x sBIT|d pHYs + tEXtSoftware www.inkscape.org< ,tEXtComment
from pyroute2.netlink.rt_files import TcClsFile
from pyroute2.netlink.rtnl import TC_H_ROOT
from pyroute2.netlink.rtnl.tcmsg import plugins as tc_plugins
from .common import IPRouteFilter
class TcRequestFilter:
def transform_handle(self, key, context, handle):
if isinstance(handle, str):
if ':' not in handle:
handle = TcClsFile().get_rt_id(handle)
else:
(major, minor) = [
int(x if x else '0', 16) for x in handle.split(':')
]
handle = (major << 8 * 2) | minor
return {key: handle}
def set_handle(self, context, value):
return self.transform_handle('handle', context, value)
def set_root(self, context, value):
ret = {}
if value:
ret['parent'] = 0xFFFFFFFF
if 'handle' not in context:
ret['handle'] = 0x10000
return ret
def set_target(self, context, value):
return self.transform_handle('target', context, value)
def set_parent(self, context, value):
return self.transform_handle('parent', context, value)
def set_default(self, context, value):
return self.transform_handle('default', context, value)
class TcIPRouteFilter(IPRouteFilter):
def finalize(self, context):
if self.command.startswith('dump'):
context.pop('kind', None)
return
if 'index' not in context:
context['index'] = 0
if 'handle' not in context:
context['handle'] = 0
# get & run the plugin
if 'kind' in context:
if context['kind'] in tc_plugins:
plugin = tc_plugins[context['kind']]
context['parent'] = context.get(
'parent', getattr(plugin, 'parent', 0)
)
if set(context.keys()) > set(('kind', 'index', 'handle')):
get_parameters = None
if self.command[-5:] == 'class':
get_parameters = getattr(
plugin, 'get_class_parameters', None
)
else:
get_parameters = getattr(
plugin, 'get_parameters', None
)
if get_parameters is not None:
context['options'] = get_parameters(dict(context))
if hasattr(plugin, 'fix_request'):
plugin.fix_request(context)
else:
context['parent'] = TC_H_ROOT
b IDATxytVսϓ22 A@IR:hCiZ[v*E:WũZA ^dQeQ @ !jZ'>gsV仿$|?g)&x-E