nexmon – Blame information for rev 1

Subversion Repositories:
Rev:
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