nexmon – Blame information for rev 1
?pathlinks?
Rev | Author | Line No. | Line |
---|---|---|---|
1 | office | 1 | #ifndef HAVE_MACADDR_H |
2 | #define HAVE_MACADDR_H |
||
3 | |||
4 | #include <string.h> |
||
5 | #include <net/ethernet.h> |
||
6 | |||
7 | #define NULLMAC "\x00\x00\x00\x00\x00\x00" |
||
8 | #define BROADCAST "\xFF\xFF\xFF\xFF\xFF\xFF" |
||
9 | |||
10 | #define MAC_IS_NULL(x) (! memcmp((x).ether_addr_octet, NULLMAC, ETHER_ADDR_LEN)) |
||
11 | #define MAC_SET_NULL(x) (memset((x).ether_addr_octet, 0x00, ETHER_ADDR_LEN)) |
||
12 | #define MAC_IS_BCAST(x) (! memcmp((x).ether_addr_octet, BROADCAST, ETHER_ADDR_LEN)) |
||
13 | #define MAC_SET_BCAST(x) (memset((x).ether_addr_octet, 0xFF, ETHER_ADDR_LEN)) |
||
14 | #define MAC_MATCHES(x,y) (! memcmp((x).ether_addr_octet, (y).ether_addr_octet, ETHER_ADDR_LEN)) |
||
15 | #define MAC_COPY(x,y) (memcpy((x).ether_addr_octet, (y).ether_addr_octet, ETHER_ADDR_LEN)) |
||
16 | |||
17 | #ifdef __GNUC__ |
||
18 | #define VARIABLE_IS_NOT_USED __attribute__ ((unused)) |
||
19 | #else |
||
20 | #define VARIABLE_IS_NOT_USED |
||
21 | #endif |
||
22 | |||
23 | static VARIABLE_IS_NOT_USED struct ether_addr SE_NULLMAC = { .ether_addr_octet = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 } }; |
||
24 | |||
25 | enum mac_kind { |
||
26 | MAC_KIND_RANDOM, |
||
27 | MAC_KIND_CLIENT, |
||
28 | MAC_KIND_AP |
||
29 | }; |
||
30 | |||
31 | struct ether_addr parse_mac(char *input); |
||
32 | |||
33 | struct ether_addr parse_half_mac(char *input); |
||
34 | |||
35 | // Generate a random MAC adress |
||
36 | // kind : Which kind of MAC should be generated? |
||
37 | // 0 : random MAC |
||
38 | // 1 : valid client MAC |
||
39 | // 2 : valid accesspoint MAC |
||
40 | struct ether_addr generate_mac(enum mac_kind kind); |
||
41 | |||
42 | // mac_base: User-Select first three bytes |
||
43 | // If mac_base is NULLMAC, it uses base from known manufactor list |
||
44 | // mac_lower: Pointer to the lower 3 bytes of the user-selected start address, that will be zeroed |
||
45 | // mac_lower will be BROADCAST if we ran out of adresses! |
||
46 | struct ether_addr get_next_mac(struct ether_addr mac_base, struct ether_addr *mac_lower); |
||
47 | |||
48 | void print_mac(struct ether_addr pmac); |
||
49 | |||
50 | #endif |