Пример #1
0
def netmap_view(network_name):
    input_dir = Path(os.environ['NETMAP_INPUT_DATA_DIRECTORY'])
    disable_cache = int(os.environ['NETMAP_DISABLE_CACHE'])
    anonymize_hex_salt = os.environ['NETMAP_ANONYMIZE_HEX_SALT']
    if len(anonymize_hex_salt) == 0:
        network_name_displayed = network_name
        anonymize_hex_salt = None
    else:
        network_name_displayed = "%s (anononymized)" % network_name
    debug = int(os.environ['NETMAP_DEBUG'])
    network_dir = input_dir / network_name

    try:
        if disable_cache:
            nm = netmap.Netmap(network_dir,
                               anonymize_hex_salt=anonymize_hex_salt,
                               debugval=debug)
        else:
            nm = netmap_cache.Netmap_cache(
                network_dir,
                run_dir,
                anonymize_hex_salt=anonymize_hex_salt,
                debugval=debug)
    except Exception as e:
        print("Exception: %s" % e)
        print("redirecting to index")
        return flask.redirect(flask.url_for('index_view'))
    nm.process()
    nodes, links = nm.map()

    saved_attributes_file = run_dir / ("%s_saved_attributes.json" %
                                       network_name)
    if saved_attributes_file.exists():
        saved_attributes = json.loads(saved_attributes_file.read_text())
        map_merge_attributes(nodes, links, saved_attributes)

    map_dict = {
        "class": "go.GraphLinksModel",
        "nodeDataArray": nodes,
        "linkDataArray": links,
    }
    if saved_attributes_file.exists():
        map_copy_settings(map_dict, saved_attributes)

    if app.debug:
        json_debug = json.dumps(map_dict, indent=4, sort_keys=True)
        print(json_debug)
        json_debug_file = run_dir / "debug.json"
        json_debug_file.write_text(json_debug)
        print("wrote json to %s" % json_debug_file)
        gojs_version = "go-debug.js"
    else:
        gojs_version = "go.js"

    return flask.render_template('map.html',
                                 network_name=network_name_displayed,
                                 map_dict=map_dict,
                                 gojs_version=gojs_version,
                                 network_statistics=nm.stats,
                                 program_header=netmap.PROGRAM_HEADER)
Пример #2
0
def netmap_get_ringid(ifname):
    if ifname.startswith('netmap:'):
        ifname = ifname[7:]

    nm = netmap.Netmap()
    nm.open()
    nm.if_name = ifname
    nm.getinfo()

    return nm.ringid, nm.flags
Пример #3
0
def netmap_max_rings(ifname):
    if ifname.startswith('netmap:'):
        ifname = ifname[7:]

    nm = netmap.Netmap()
    nm.open()
    nm.if_name = ifname
    nm.getinfo()

    return nm.tx_rings
Пример #4
0
 def send(packet, interface):
     sender = netmap.Netmap()
     sender.open()
     sender.if_name = interface
     sender.register()
     txr = sender.transmit_rings[0]
     txr.slots[0].buf[0:len(packet)] = packet
     txr.slots[0].len = len(packet)
     txr.cur = txr.head = 1
     sender.txsync()
     sender.close()
Пример #5
0
 def test_k8sexample(self):
     self.maxDiff = None
     networkdir_name = "k8s_example"
     network_dir = INPUT_DATA_DIRECTORY / networkdir_name
     nm = netmap.Netmap(network_dir)
     nm.process()
     nm.stats.pop(
         'last_modification')  # ignore modification date that could change
     self.assertEqual(EXPECTED_RESULTS[networkdir_name]["summary"],
                      nm.summary())
     self.assertEqual(EXPECTED_RESULTS[networkdir_name]["map"], nm.map())
     self.assertEqual(EXPECTED_RESULTS[networkdir_name]["statistics"],
                      nm.stats)
Пример #6
0
        nargs='?',
        help=
        'name of the network to analyse from input_data_directory. if not specified, list networks avaible for analysis.'
    )
    args = parser.parse_args()

    data_dir = Path(args.input_data_directory).resolve()
    if not data_dir.exists():
        print("error: input_data_directory does not exist : %s" % data_dir)
        sys.exit(1)
    if args.network_name:
        network_dir = data_dir / args.network_name
        if not network_dir.exists():
            print(
                "error: network directory '%s' does not exist in input_data_directory : %s"
                % (args.network_name, network_dir))
            sys.exit(1)
        netmap = netmap.Netmap(network_dir,
                               anonymize_hex_salt=args.anonymize_hex_salt,
                               debugval=args.debug)
        netmap.process()
        if args.graph_output:
            print(json.dumps(netmap.map(), indent=4))
        else:
            print(netmap.summary())
            print(netmap.statistics())
    else:
        print("Networks in %s:" % data_dir)
        print('\n'.join(
            [str(x.name) for x in data_dir.iterdir() if x.is_dir()]))
Пример #7
0
import netmap

# see 'help(netmap)' for documentation
n = netmap.Netmap()
print n
n.open()
n.if_name = 'enp1s0f1'
n.ringid = netmap.HwRing | 3
n.arg3 = 2
n.register()
print n
print n.interface
n.close()
Пример #8
0
    '-i',
    '--interface',
    help='the interface to register with netmap; '
    'can be in the form <OSNAME> or <VALENAME>, where '
    'OSNAME is the O.S. name for a network interface (e.g. "eth0"), '
    '<VALENAME> is a valid VALE port name (e.g. "vale18:2")',
    default='vale0:0')

args = parser.parse_args()

pkt = build_packet()

print("Opening interface %s" % (args.interface))

# open the netmap device and register an interface
nm = netmap.Netmap()
nm.open()
nfd = nm.getfd()
nm.if_name = args.interface
nm.register()
time.sleep(1)

# fill in the netmap slots and netmap buffers for tx ring 0
txr = nm.transmit_rings[0]
num_slots = txr.num_slots
for i in range(num_slots):
    txr.slots[i].buf[0:len(pkt)] = pkt
    txr.slots[i].len = len(pkt)

print("Starting transmission, press Ctrl-C to stop")