root / contrib / ganeti-hooks / mac2eui64.py @ f533f224
History | View | Annotate | Download (580 Bytes)
1 |
#!/usr/bin/env python
|
---|---|
2 |
|
3 |
import sys |
4 |
|
5 |
from IPy import IP |
6 |
|
7 |
mac = sys.argv[1]
|
8 |
prefix = IP(sys.argv[2])
|
9 |
|
10 |
if prefix.version() != 6: |
11 |
print "%s is not a valid IPv6 prefix" % prefix |
12 |
sys.exit(1)
|
13 |
|
14 |
components = mac.split(":")
|
15 |
pfx = sys.argv[2].split("::")[0] |
16 |
|
17 |
if len(components) != 6: |
18 |
print "%s is not a valid MAC-48 address" % mac |
19 |
sys.exit(1)
|
20 |
|
21 |
eui64 = components[:3] + [ "ff", "fe" ] + components[3:] |
22 |
|
23 |
eui64[0] = "%02x" % (int(eui64[0], 16) ^ 0x02) |
24 |
|
25 |
for l in range(0, len(eui64), 2): |
26 |
pfx += ":%s" % "".join(eui64[l:l+2]) |
27 |
|
28 |
print IP(pfx)
|
29 |
|
30 |
# vim: set ts=4 sts=4 sw=4 et ai :
|