start splitting up
[hippotat] / hippotit / __init__.py
CommitLineData
b0cfbfce
IJ
1# -*- python -*-
2
3import hippotit.slip as slip
4
5import ipaddress
6from ipaddress import AddressValueError
7
8#---------- packet parsing ----------
9
10def packet_addrs(packet):
11 version = packet[0] >> 4
12 if version == 4:
13 addrlen = 4
14 saddroff = 3*4
15 factory = ipaddress.IPv4Address
16 elif version == 6:
17 addrlen = 16
18 saddroff = 2*4
19 factory = ipaddress.IPv6Address
20 else:
21 raise ValueError('unsupported IP version %d' % version)
22 saddr = factory(packet[ saddroff : saddroff + addrlen ])
23 daddr = factory(packet[ saddroff + addrlen : saddroff + addrlen*2 ])
24 return (saddr, daddr)
25
26#---------- address handling ----------
27
28def ipaddr(input):
29 try:
30 r = ipaddress.IPv4Address(input)
31 except AddressValueError:
32 r = ipaddress.IPv6Address(input)
33 return r
34
35def ipnetwork(input):
36 try:
37 r = ipaddress.IPv4Network(input)
38 except NetworkValueError:
39 r = ipaddress.IPv6Network(input)
40 return r