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)
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
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
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()
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)
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()]))
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()
'-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")