forked from cozybit/authsae
-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathPORTING
67 lines (47 loc) · 2.45 KB
/
PORTING
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
The SAE module, sae.c, is OS-independent. The OS-specific portion
of this release is <os>/meshd.c. Porting SAE to a different OS requires
definition of a new meshd.c module for the new OS. Each <os>/meshd.c
must:
1. manage a wireless interface-- set the ssid, set the band, set
the channel, et cetera.
2. receive beacons and authentication frames in an OS-specific
manner.
3. be capable of sending authentication frames over the wireless
interface.
A generic service model, service.[ch], is included to allow <os>/meshd.c
to manage socket interfaces and sae to manage timers. Replacement of
service.[ch] with a different service model should be trivial.
os_glue.h defines the external API each <os>/meshd.c must have
to allow SAE to use to send frames over the air. These are:
- int meshd_write_mgmt(char *frame, int len, void *cookie)
To send a management frame over the air.
- void fin(unsigned short status, unsigned char *peer_mac,
unsigned char *key, int keylen, void *cookie)
To obtain notification of termination of sae. The status
is defined in ieee802_11.h and, if zero, a key will be
returned for the specified MAC address.
<os>/meshd.c must make a local copy of this key if it wants to
manipulate it for any reason.
sae.h defines the routines each <os>/meshd.c must call to enable SAE
authentication.
- int sae_initialize(char *ssid, char *config_directory)
This must be called first, before any processing is done. It
allows SAE to configure itself.
- int process_mgmt_frame(struct ieee80211_mgmt_frame *frame, int len,
unsigned char *local_mac_addr, void *cookie);
Used to send beacons and authentiction frames to SAE for
processing. The cookie argument is passed back to the caller on all
callbacks associated with this management frame (e.g. meshd_write_mgmt(),
fin()). It is mapped to associated with a given peer.
- void sae_read_config(int signal)
This is a helper routine that can be used to catch HUP, or
<os>/meshd.c can catch HUP itself and call this routine
if an sa_handler(int) action is not supported by the OS.
It re-reads the SAE configuration without having to stop
and re-start meshd.
void sae_dump_db (int signal);
This is a routine that can be used to catch USR1, or
<os>/meshd.c can catch USR1 itself and call this routine
if an sa_handler(int) action is not supported by the OS.
This prints all peer instances and their current state of
negotiation.