| @@ 86-98 (lines=13) @@ | ||
| 83 | @classmethod |
|
| 84 | def fromElements (cls, prefix, suffix): |
|
| 85 | try: |
|
| 86 | if '.' in prefix: |
|
| 87 | data = [character(0),character(1)] |
|
| 88 | data.extend([character(int(_)) for _ in prefix.split('.')]) |
|
| 89 | data.extend([character(suffix >> 8),character(suffix & 0xFF)]) |
|
| 90 | distinguisher = concat_bytes_i(data) |
|
| 91 | else: |
|
| 92 | number = int(prefix) |
|
| 93 | if number < pow(2,16) and suffix < pow(2,32): |
|
| 94 | distinguisher = character(0) + character(0) + pack('!H',number) + pack('!L',suffix) |
|
| 95 | elif number < pow(2,32) and suffix < pow(2,16): |
|
| 96 | distinguisher = character(0) + character(2) + pack('!L',number) + pack('!H',suffix) |
|
| 97 | else: |
|
| 98 | raise ValueError('invalid route-distinguisher %s' % number) |
|
| 99 | ||
| 100 | return cls(distinguisher) |
|
| 101 | except ValueError: |
|
| @@ 49-61 (lines=13) @@ | ||
| 46 | prefix = data[:separator] |
|
| 47 | suffix = int(data[separator+1:]) |
|
| 48 | ||
| 49 | if '.' in prefix: |
|
| 50 | data = [character(0),character(1)] |
|
| 51 | data.extend([character(int(_)) for _ in prefix.split('.')]) |
|
| 52 | data.extend([character(suffix >> 8),character(suffix & 0xFF)]) |
|
| 53 | rtd = concat_bytes_i(data) |
|
| 54 | else: |
|
| 55 | number = int(prefix) |
|
| 56 | if number < pow(2,16) and suffix < pow(2,32): |
|
| 57 | rtd = character(0) + character(0) + pack('!H',number) + pack('!L',suffix) |
|
| 58 | elif number < pow(2,32) and suffix < pow(2,16): |
|
| 59 | rtd = character(0) + character(2) + pack('!L',number) + pack('!H',suffix) |
|
| 60 | else: |
|
| 61 | raise ValueError('invalid route-distinguisher %s' % data) |
|
| 62 | ||
| 63 | return RouteDistinguisher(rtd) |
|
| 64 | ||