Mini Shell
from socket import AF_INET
from pyroute2.common import get_address_family
from pyroute2.netlink.rtnl import ndmsg
from .common import Index, IPRouteFilter
class NeighbourFieldFilter(Index):
def set_index(self, context, value):
return {
'ifindex': super(NeighbourFieldFilter, self).set_index(
context, value
)['index']
}
def set_ifindex(self, context, value):
return self.set_index(context, value)
def _state(self, value):
if isinstance(value, str):
value = ndmsg.states_a2n(value)
return {'state': value}
def set_nud(self, context, value):
return self._state(value)
def set_state(self, context, value):
return self._state(value)
def set_dst(self, context, value):
if value:
return {'dst': value}
else:
return {}
class NeighbourIPRouteFilter(IPRouteFilter):
def set_dst(self, context, value):
ret = {'dst': value}
if 'family' not in context:
ret['family'] = get_address_family(value)
return ret
def finalize(self, context):
if self.command not in ('dump', 'get'):
if 'state' not in context:
context['state'] = ndmsg.NUD_PERMANENT
if 'family' not in context:
context['family'] = AF_INET
Zerion Mini Shell 1.0