Annotation of embedaddon/coova-chilli/src/chilli.h, revision 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>