Mini Shell
import socket
from pyroute2.netlink.rtnl.fibmsg import FR_ACT_NAMES, fibmsg
from .common import Index, IPRouteFilter, IPTargets, NLAKeyTransform
DEFAULT_FRA_PRIORITY = 32000
class RuleFieldFilter(IPTargets, Index, NLAKeyTransform):
_nla_prefix = fibmsg.prefix
class RuleIPRouteFilter(IPRouteFilter):
def set_action(self, context, value):
if isinstance(value, str):
return {
'action': FR_ACT_NAMES.get(
value, FR_ACT_NAMES.get('FR_ACT_' + value.upper(), value)
)
}
return {'action': value}
def finalize(self, context):
if self.command != 'dump':
if 'family' not in context:
context['family'] = socket.AF_INET
if 'priority' not in context:
context['priority'] = DEFAULT_FRA_PRIORITY
if 'table' in context and 'action' not in context:
context['action'] = 'to_tbl'
for key in ('src_len', 'dst_len'):
if context.get(key, None) is None and key[:3] in context:
context[key] = {socket.AF_INET6: 128, socket.AF_INET: 32}[
context['family']
]
Zerion Mini Shell 1.0