-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathlibifaddr.pxd
More file actions
79 lines (51 loc) · 1.86 KB
/
libifaddr.pxd
File metadata and controls
79 lines (51 loc) · 1.86 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
# cython: language_level=3
from libc.stdint cimport *
# ==== Externals
# == Ethernet related
cdef extern from "<linux/if_ether.h>":
enum:
ETH_ALEN
cdef extern from "<net/ethernet.h>":
cdef struct ether_addr:
uint8_t ether_addr_octet[ETH_ALEN]
cdef extern from "<linux/if_packet.h>":
cdef struct sockaddr_ll:
uint8_t sll_addr[8]
cdef extern from "<netinet/ether.h>":
char *ether_ntoa_r(const ether_addr *addr, char *buf)
ether_addr *ether_aton_r(const char *asc, ether_addr *addr)
# == INET/INET6 related
cdef extern from "<netinet/in.h>":
enum:
INET_ADDRSTRLEN
INET6_ADDRSTRLEN
cdef extern from "<sys/socket.h>":
cdef struct sockaddr:
uint8_t sa_family
cdef extern from "<arpa/inet.h>":
cdef struct in_addr:
pass
cdef struct in6_addr:
pass
cdef struct sockaddr_in:
in_addr sin_addr
cdef struct sockaddr_in6:
in6_addr sin6_addr
const char *inet_ntop(int af, const void *src, char *dst, uint32_t size)
# == ifaddrs related
cdef extern from "<ifaddrs.h>":
cdef struct ifaddrs:
ifaddrs *ifa_next # Next item in list
char *ifa_name # Name of interface
unsigned int ifa_flags # Flags from SIOCGIFFLAGS
sockaddr *ifa_addr # Address of interface
sockaddr *ifa_netmask # Netmask of interface
sockaddr *ifa_broadaddr # Broadcast address of interface (alias of below)
sockaddr *ifa_dstaddr # Point-to-point destination address (alias of above)
void *ifa_data # Address-specific data
int getifaddrs(ifaddrs **ifap)
void freeifaddrs(ifaddrs *ifa)
# ==== Module functions
cpdef uint64_t ether_aton(str asc)
cpdef str ether_ntoa(uint64_t addr)
cpdef ifaddr(str iface=*, int16_t family=*, bint mask=*)