Annotation of embedaddon/coova-chilli/src/chilli.h, revision 1.1.1.1
1.1 misho 1: /*
2: * chilli - A Wireless LAN Access Point Controller
3: * Copyright (C) 2003, 2004, 2005 Mondru AB.
4: * Copyright (c) 2006-2007 David Bird <david@coova.com>
5: *
6: * The contents of this file may be used under the terms of the GNU
7: * General Public License Version 2, provided that the above copyright
8: * notice and this permission notice is included in all copies or
9: * substantial portions of the software.
10: *
11: * The initial developer of the original code is
12: * Jens Jakobsen <jj@chillispot.org>
13: *
14: */
15:
16: #ifndef _CHILLI_H
17: #define _CHILLI_H
18:
19: /* Authtype defs */
20: #define CHAP_DIGEST_MD5 0x05
21: #define CHAP_MICROSOFT 0x80
22: #define CHAP_MICROSOFT_V2 0x81
23: #define PAP_PASSWORD 256
24: #define EAP_MESSAGE 257
25:
26: #define MPPE_KEYSIZE 16
27: #define NT_KEYSIZE 16
28:
29:
30: #define DNPROT_NULL 1
31: #define DNPROT_DHCP_NONE 2
32: #define DNPROT_UAM 3
33: #define DNPROT_WPA 4
34: #define DNPROT_EAPOL 5
35: #define DNPROT_MAC 6
36:
37: /* Debug facility */
38: #define DEBUG_DHCP 2
39: #define DEBUG_RADIUS 4
40: #define DEBUG_REDIR 8
41: #define DEBUG_CONF 16
42:
43: /* Struct information for each connection */
44: struct app_conn_t {
45:
46: char is_adminsession;
47:
48: /* Management of connections */
49: int inuse;
50: int unit;
51: struct app_conn_t *next; /* Next in linked list. 0: Last */
52: struct app_conn_t *prev; /* Previous in linked list. 0: First */
53:
54: /* Pointers to protocol handlers */
55: void *uplink; /* Uplink network interface (Internet) */
56: void *dnlink; /* Downlink network interface (Wireless) */
57: int dnprot; /* Downlink protocol */
58:
59: #if(0)
60: #define s_params params[0]
61: #define ss_params params[1]
62: #define s_state state[0]
63: #define ss_state state[1]
64: struct session_params params[2]; /* Session parameters */
65: struct session_state state[2]; /* Session state */
66: char has_subsession;
67: #endif
68: struct session_params s_params; /* Session parameters */
69: struct session_state s_state; /* Session state */
70:
71: /* Radius authentication stuff */
72: /* Parameters are initialised whenever a reply to an access request
73: is received. */
74: uint8_t chal[EAP_LEN]; /* EAP challenge */
75: size_t challen; /* Length of EAP challenge */
76: uint8_t sendkey[RADIUS_ATTR_VLEN];
77: uint8_t recvkey[RADIUS_ATTR_VLEN];
78: uint8_t lmntkeys[RADIUS_MPPEKEYSSIZE];
79: size_t sendlen;
80: size_t recvlen;
81: size_t lmntlen;
82: uint32_t policy;
83: uint32_t types;
84: uint8_t ms2succ[MS2SUCCSIZE];
85: size_t ms2succlen;
86:
87: /* Radius proxy stuff */
88: /* Parameters are initialised whenever a radius proxy request is received */
89: /* Only one outstanding request allowed at a time */
90: int radiuswait; /* Radius request in progres */
91: struct sockaddr_in radiuspeer; /* Where to send reply */
92: uint8_t radiusid; /* ID to reply with */
93: uint8_t authenticator[RADIUS_AUTHLEN];
94: int authtype; /* TODO */
95:
96:
97: /* Parameters for radius accounting */
98: /* These parameters are set when an access accept is sent back to the
99: NAS */
100:
101: uint32_t nasip; /* Set by access request */
102: uint32_t nasport; /* Set by access request */
103: uint8_t hismac[PKT_ETH_ALEN];/* His MAC address */
104: uint8_t ourmac[PKT_ETH_ALEN];/* Our MAC address */
105: struct in_addr ourip; /* IP address to listen to */
106: struct in_addr hisip; /* Client IP address */
107: struct in_addr reqip; /* IP requested by client */
108: uint16_t mtu;
109:
110: /* Information for each connection */
111: struct in_addr net;
112: struct in_addr mask;
113: struct in_addr dns1;
114: struct in_addr dns2;
115:
116: /* UAM information */
117: char uamabort; /* should be bit options */
118: char uamexit;
119: };
120:
121: extern struct app_conn_t *firstfreeconn; /* First free in linked list */
122: extern struct app_conn_t *lastfreeconn; /* Last free in linked list */
123: extern struct app_conn_t *firstusedconn; /* First used in linked list */
124: extern struct app_conn_t *lastusedconn; /* Last used in linked list */
125:
126: extern struct radius_t *radius; /* Radius client instance */
127: extern struct dhcp_t *dhcp; /* DHCP instance */
128: extern struct tun_t *tun; /* TUN/TAP instance */
129:
130: int printstatus(struct app_conn_t *appconn);
131: int terminate_appconn(struct app_conn_t *appconn, int terminate_cause);
132: void config_radius_session(struct session_params *params, struct radius_packet_t *pack, int reconfig);
133: int cmdsock_init();
134:
135: #endif /*_CHILLI_H */
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>