elif x in ('-z', '--file-size'): file_sz = max(string.atof(y), mrtd.MIN_FILE_SZ) elif x in ('-i', '--ip-addr'): src_ip = str2id(y) else: usage() #--------------------------------------------------------------------------- if not area_addr: usage() isis = Isis(Isis._dev_str, area_addr, src_id, lan_id, src_ip) isis._mrtd = mrtd.Mrtd(file_pfx, "w+b", file_sz, mrtd_type, isis) if VERBOSE > 1: print ` isis ` try: timeout = Isis._holdtimer while 1: # main loop before = time.time() rfds, _, _ = select.select([isis._sock], [], [], timeout) after = time.time() elapsed = after - before if rfds != []: # need to rx pkt(s) rv = isis.parseMsg(VERBOSE, 0)
elif x in ('-z', '--file-size'): file_sz = max(string.atof(y), mrtd.MIN_FILE_SZ) elif x in ('-b', '--bind'): ADDRESS = y else: usage() if not ADDRESS: usage() #--------------------------------------------------------------------------- ospf = Ospf() ospf._mrtd = mrtd.Mrtd(file_pfx, "w+b", file_sz, mrtd.MSG_TYPES["PROTOCOL_OSPF2"], ospf) if VERBOSE > 0: print ospf try: timeout = Ospf._holdtimer rv = None while 1: before = time.time() rfds, _, _ = select.select([ospf._sock], [], [], timeout) after = time.time() elapsed = after - before if len(rfds) > 0: rv = ospf.parseMsg(VERBOSE, 0) else:
VERBOSE = 2 filenames = args if not filenames: usage() #--------------------------------------------------------------------------- verbose = VERBOSE-1 if verbose < 0: verbose = 0 for fn in filenames: cnt = 0 try: of = open(fn + '.clean', 'w+b') mrt = mrtd.Mrtd(fn, "rb", mrtd.DEFAULT_SIZE) error('[ %s ] cleaning...' % fn) while 1: cnt = cnt + 1 msg_tup = mrt.read() msg = msg_tup[-2] + msg_tup[-1] try: rv = mrt.parse(msg_tup, verbose) except (KeyboardInterrupt): raise KeyboardInterrupt except: rv["T"] = None
elif x in ('-z', '--file-size'): file_sz = max(string.atof(y), mrtd.MIN_FILE_SZ) else: usage() if not (rem_name and asn): usage() if not loc_name: loc_name = socket.gethostname() #--------------------------------------------------------------------------- bgp = Bgp(loc_name, asn, rem_name, port, holdtime) bgp._mrt = mrtd.Mrtd(file_pfx, "w+b", file_sz, mrtd_type, bgp) if VERBOSE > 0: print `bgp` try: # the wafeur-est thin state machine you ever did see :-) bgp.sendOpen(VERBOSE, 0) rv = bgp.parseMsg(VERBOSE, 0) bgp._bgp_peer_as = rv["V"]["AS"] bgp.sendKeepalive(VERBOSE, 0) while 1: msg = bgp.parseMsg(VERBOSE, 0)
filenames = args if not filenames: usage() #--------------------------------------------------------------------------- NEXT_DUMP = START_T + INTERVAL # seed from dump if required here if TABLE_F: cnt = 0 error('[ %s ] initializing table...' % TABLE_F) try: mrt = mrtd.Mrtd(TABLE_F, "rb") while 1: rv = mrt.parse(mrt.read(), VERBOSE) cnt = cnt + 1 if rv["T"] == mrtd.MSG_TYPES["TABLE_DUMP"]: for v in rv["V"]: pfx = v["V"]["PREFIX"] entry = { "TIME" : v["V"]["UPTIME"], "PEER_IP": v["V"]["PEER_IP"], "PEER_AS": v["V"]["PEER_AS"], "ATTRS" : v["V"]["ATTRS"], } TABLE[pfx] = entry except (mrtd.EOFExc): error("end of file: %u messages\n" % cnt)
filenames = [] for f in args: filenames += glob.glob(f) if not filenames: usage() filenames.sort() error('### filenames:\t%s\n' % filenames[0]) for f in filenames: error('###\t\t%s\n' % f) ## filenames = args ## if not filenames: usage() #----------------------------------------------------------------------- msgs = [] mrtds = {} for f in filenames: mrtds[f] = mrtd.Mrtd(f, "rb") try: while 1: msg = mrtds[f].read() if (((START_T < 0) or (msg[0] >= START_T)) and ((END_T < 0) or (msg[0] <= END_T))): msgs.append( Msg(mrtds[f], msg) ) break except (mrtd.EOFExc): del mrtds[f] msgs.sort() of = open(file_pfx+ time.strftime(extn_fmt, time.gmtime(msgs[0]._time)),