Code Duplication    Length = 13-14 lines in 2 locations

lib/exabgp/bgp/message/update/nlri/qualifier/rd.py 1 location

@@ 82-95 (lines=14) @@
79
    @classmethod
80
    def fromElements(cls, prefix, suffix):
81
        try:
82
            if '.' in prefix:
83
                data = [bytes([0, 1])]
84
                # can be simplied
85
                data.extend([bytes([int(_)]) for _ in prefix.split('.')])
86
                data.extend([bytes([suffix >> 8]), bytes([suffix & 0xFF])])
87
                distinguisher = b''.join(data)
88
            else:
89
                number = int(prefix)
90
                if number < pow(2, 16) and suffix < pow(2, 32):
91
                    distinguisher = bytes([0, 0]) + pack('!H', number) + pack('!L', suffix)
92
                elif number < pow(2, 32) and suffix < pow(2, 16):
93
                    distinguisher = bytes([0, 2]) + pack('!L', number) + pack('!H', suffix)
94
                else:
95
                    raise ValueError('invalid route-distinguisher %s' % number)
96
97
            return cls(distinguisher)
98
        except ValueError:

lib/exabgp/configuration/static/mpls.py 1 location

@@ 46-58 (lines=13) @@
43
        prefix = data[:separator]
44
        suffix = int(data[separator + 1 :])
45
46
    if '.' in prefix:
47
        data = [bytes([0, 1])]
48
        data.extend([bytes([int(_)]) for _ in prefix.split('.')])
49
        data.extend([bytes([suffix >> 8]), bytes([suffix & 0xFF])])
50
        rtd = b''.join(data)
51
    else:
52
        number = int(prefix)
53
        if number < pow(2, 16) and suffix < pow(2, 32):
54
            rtd = bytes([0, 0]) + pack('!H', number) + pack('!L', suffix)
55
        elif number < pow(2, 32) and suffix < pow(2, 16):
56
            rtd = bytes([0, 2]) + pack('!L', number) + pack('!H', suffix)
57
        else:
58
            raise ValueError('invalid route-distinguisher %s' % data)
59
60
    return RouteDistinguisher(rtd)
61