Exemple #1
0
    def __setitem__(self, key, value):
        if key.startswith("ipdb_"):
            return

        if key in ("src", "dst"):
            v = value.split("/")
            if len(v) == 2:
                value, self["%s_len" % key] = v[0], int(v[1])
        elif key == "action" and isinstance(value, basestring):
            value = FR_ACT_NAMES.get(value, (FR_ACT_NAMES.get("FR_ACT_" + value.upper(), value)))

        dict.__setitem__(self, key, value)
Exemple #2
0
    def __setitem__(self, key, value):
        if key.startswith('ipdb_'):
            return

        if key in ('src', 'dst'):
            v = value.split('/')
            if len(v) == 2:
                value, self['%s_len' % key] = v[0], int(v[1])
        elif key == 'action' and isinstance(value, basestring):
            value = (FR_ACT_NAMES.get(
                value, (FR_ACT_NAMES.get('FR_ACT_' + value.upper(), value))))

        dict.__setitem__(self, key, value)
#!/usr/bin/env python
from pyroute2 import IPRoute
from pyroute2.netlink.rtnl.fibmsg import FR_ACT_NAMES
from netaddr import IPNetwork
from socket import AF_INET
import click

ipr = IPRoute()

FR_ACT_NAMES_MAP = dict((v, k) for k, v in FR_ACT_NAMES.iteritems())
IPRULES_MAP = {
    'family': 'family',
    'action': FR_ACT_NAMES_MAP,
    'dst_len': 'dst_len',
    'src_len': 'src_len',
}
IPRULE_ATTRS_MAP = {
    'priority': 'FRA_PRIORITY',
    'table': 'FRA_TABLE',
    'src': 'FRA_SRC',
    'dst': 'FRA_DST',
}


def nla_slots_to_dict(slots):
    return {slot[0]: slot[1] for slot in slots}


def map_dict(d, mappings):
    ret = dict()
    for k, mapping in mappings.iteritems():