Eap channel binding support code
[freeradius.git] / src / modules / rlm_eap / libeap / eap_types.h
index 15e7f32..c494d50 100644 (file)
@@ -57,7 +57,9 @@ RCSIDH(eap_types_h, "$Id$")
 #define PW_EAP_MSCHAPV2                26
 #define PW_EAP_CISCO_MSCHAPV2  29
 #define PW_EAP_TNC             38
-#define PW_EAP_MAX_TYPES       39
+#define PW_EAP_IKEV2           49
+     /* same number as last type */
+#define PW_EAP_MAX_TYPES       49
 
 #define EAP_HEADER_LEN                 4
 
@@ -102,14 +104,19 @@ typedef struct eap_packet {
  * Structure to represent packet format of eap *on wire*
  */
 typedef struct eap_packet_t {
-       unsigned char   code;
-       unsigned char   id;
-       unsigned char   length[2];
-       unsigned char   data[1];
+       uint8_t         code;
+       uint8_t         id;
+       uint8_t         length[2];
+       uint8_t         data[1];
 } eap_packet_t;
 
-
-
+/*
+ * Structure to represent eap channel binding packet format *on wire*
+ */
+typedef struct eap_chbind_packet_t {
+       uint8_t         code;
+       uint8_t         data[1];
+} eap_chbind_packet_t;
 
 
 /*
@@ -117,9 +124,11 @@ typedef struct eap_packet_t {
  */
 extern int eaptype_name2type(const char *name);
 extern const char *eaptype_type2name(unsigned int type, char *buffer, size_t buflen);
+extern int eap_wireformat(EAP_PACKET *reply);
 extern int eap_basic_compose(RADIUS_PACKET *packet, EAP_PACKET *reply);
-extern void map_eap_types(RADIUS_PACKET *req);
-extern eap_packet_t *eap_attribute(VALUE_PAIR *vps);
-extern void unmap_eap_types(RADIUS_PACKET *rep);
+extern VALUE_PAIR *eap_packet2vp(const eap_packet_t *reply);
+extern eap_packet_t *eap_vp2packet(VALUE_PAIR *vps);
+extern VALUE_PAIR *eap_chbind_packet2vp(const eap_chbind_packet_t *packet, size_t len);
+extern size_t eap_chbind_vp2packet(VALUE_PAIR *vps, eap_chbind_packet_t **packet);
 
 #endif /* _EAP_TYPES_H */