def as_path(tokeniser): as_seq = [] as_set = [] value = tokeniser() inset = False try: if value == '[': while True: value = tokeniser() if value == ',': continue if value in ('(', '['): inset = True while True: value = tokeniser() if value in (')', ']'): break as_set.append(ASN.from_string(value)) if value == ')': inset = False continue if value == ']': if inset: inset = False continue break as_seq.append(ASN.from_string(value)) else: as_seq.append(ASN.from_string(value)) except ValueError: raise ValueError('could not parse as-path') return ASPath(as_seq, as_set)
def as_path (tokeniser): as_seq = [] as_set = [] value = tokeniser() inset = False try: if value == '[': while True: value = tokeniser() if value == ',': continue if value in ('(','['): inset = True while True: value = tokeniser() if value == ')': break as_set.append(ASN.from_string(value)) if value == ')': inset = False continue if value == ']': if inset: inset = False continue break as_seq.append(ASN.from_string(value)) else: as_seq.append(ASN.from_string(value)) except ValueError: raise ValueError('could not parse as-path') return ASPath(as_seq,as_set)
def as_path(tokeniser): as_seq = [] as_set = [] value = tokeniser() inset = False try: if value == "[": while True: value = tokeniser() if value == ",": continue if value in ("(", "["): inset = True while True: value = tokeniser() if value == ")": break as_set.append(ASN.from_string(value)) if value == ")": inset = False continue if value == "]": if inset: inset = False continue break as_seq.append(ASN.from_string(value)) else: as_seq.append(ASN.from_string(value)) except ValueError: raise ValueError("could not parse as-path") return ASPath(as_seq, as_set)
def as_path(tokeniser): as_path = [] insert = None while True: value = tokeniser() if value == '[': value = tokeniser.peek() if value != '{': insert = SEQUENCE() else: insert = CONFED_SEQUENCE() elif value == '(': value = tokeniser.peek() if value != '{': insert = SET() else: insert = CONFED_SET() elif len(as_path) == 0: try: return ASPath(ASN.from_string(value)) except ValueError: raise ValueError('could not parse as-path') else: raise ValueError('could not parse as-path') while True: value = tokeniser() # could be too nice eating a trailing and ignore a erroneous },, # but simpler that way if value in (',', '}'): continue if value in (')', ']'): as_path.append(insert) value = tokeniser.peek() if value in ('[', '('): break return ASPath(as_path) try: insert.append(ASN.from_string(value)) continue except ValueError: raise ValueError('could not parse as-path')
def aggregator(tokeniser): eat = True if tokeniser.tokens[0] == "(" else False if eat: tokeniser() value = tokeniser() if value != "(": tokeniser.rewind(value) return None try: as_number, address = tokeniser().split(":") local_as = ASN.from_string(as_number) local_address = RouterID(address) except (ValueError, IndexError): raise ValueError("invalid aggregator") if eat: value = tokeniser() if value != ")": raise ValueError("invalid aggregator") # XXX: This is buggy it can be an Aggregator4 return Aggregator(local_as, local_address)
def aggregator(tokeniser): agg = tokeniser() eat = True if agg == '(' else False if eat: agg = tokeniser() if agg.endswith(')'): eat = False agg = agg[:-1] elif agg.startswith('('): if agg.endswith(')'): eat = False agg = agg[1:-1] else: eat = True agg = agg[1:] try: as_number, address = agg.split(':') local_as = ASN.from_string(as_number) local_address = RouterID(address) except (ValueError, IndexError): raise ValueError('invalid aggregator') if eat: if tokeniser() != ')': raise ValueError('invalid aggregator') return Aggregator(local_as, local_address)
def aggregator(tokeniser): eat = True if tokeniser.tokens[0] == '(' else False if eat: tokeniser() value = tokeniser() if value != '(': tokeniser.rewind(value) return None try: as_number, address = tokeniser().split(':') local_as = ASN.from_string(as_number) local_address = RouterID(address) except (ValueError, IndexError): raise ValueError('invalid aggregator') if eat: value = tokeniser() if value != ')': raise ValueError('invalid aggregator') # XXX: This is buggy it can be an Aggregator4 return Aggregator(local_as, local_address)
def aggregator(tokeniser): first = tokeniser.peek() eat = True if first == '(' else False if eat: tokeniser() try: as_number, address = tokeniser().split(':') local_as = ASN.from_string(as_number) local_address = RouterID(address) except (ValueError, IndexError): raise ValueError('invalid aggregator') if eat: if tokeniser() != ')': raise ValueError('invalid aggregator') return Aggregator(local_as, local_address)
def aggregator (tokeniser): first = tokeniser.peek() eat = True if first == '(' else False if eat: tokeniser() try: as_number,address = tokeniser().split(':') local_as = ASN.from_string(as_number) local_address = RouterID(address) except (ValueError,IndexError): raise ValueError('invalid aggregator') if eat: if tokeniser() != ')': raise ValueError('invalid aggregator') return Aggregator(local_as,local_address)
def aggregator(tokeniser): eat = tokeniser.tokens and tokeniser.tokens[0] == '(' if eat: tokeniser() try: as_number, address = tokeniser().split(':') local_as = ASN.from_string(as_number) local_address = RouterID(address) except (ValueError, IndexError): raise ValueError('invalid aggregator') if eat: if tokeniser() != ')': raise ValueError('invalid aggregator') # XXX: This could be buggy - check it if local_as.asn4(): return Aggregator4(local_as, local_address) return Aggregator(local_as, local_address)
def aggregator (tokeniser): eat = tokeniser.tokens and tokeniser.tokens[0] == '(' if eat: tokeniser() try: as_number,address = tokeniser().split(':') local_as = ASN.from_string(as_number) local_address = RouterID(address) except (ValueError,IndexError): raise ValueError('invalid aggregator') if eat: if tokeniser() != ')': raise ValueError('invalid aggregator') # XXX: This could be buggy - check it if local_as.asn4(): return Aggregator4(local_as,local_address) return Aggregator(local_as,local_address)