summaryrefslogtreecommitdiffstats
path: root/src/include/ipxe/eapol.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/include/ipxe/eapol.h')
-rw-r--r--src/include/ipxe/eapol.h26
1 files changed, 23 insertions, 3 deletions
diff --git a/src/include/ipxe/eapol.h b/src/include/ipxe/eapol.h
index 952d6c75..dcf39294 100644
--- a/src/include/ipxe/eapol.h
+++ b/src/include/ipxe/eapol.h
@@ -12,6 +12,7 @@ FILE_LICENCE ( GPL2_OR_LATER_OR_UBDL );
#include <stdint.h>
#include <ipxe/netdevice.h>
#include <ipxe/tables.h>
+#include <ipxe/eap.h>
/** EAPoL header */
struct eapol_header {
@@ -29,9 +30,28 @@ struct eapol_header {
/** EAPoL-encapsulated EAP packets */
#define EAPOL_TYPE_EAP 0
+/** EAPoL start */
+#define EAPOL_TYPE_START 1
+
/** EAPoL key */
#define EAPOL_TYPE_KEY 5
+/** An EAPoL supplicant */
+struct eapol_supplicant {
+ /** EAP supplicant */
+ struct eap_supplicant eap;
+ /** EAPoL-Start retransmission timer */
+ struct retry_timer timer;
+ /** EAPoL-Start transmission count */
+ unsigned int count;
+};
+
+/** Delay between EAPoL-Start packets */
+#define EAPOL_START_INTERVAL ( 2 * TICKS_PER_SEC )
+
+/** Maximum number of EAPoL-Start packets to transmit */
+#define EAPOL_START_COUNT 3
+
/** An EAPoL handler */
struct eapol_handler {
/** Type */
@@ -39,15 +59,15 @@ struct eapol_handler {
/**
* Process received packet
*
+ * @v supplicant EAPoL supplicant
* @v iobuf I/O buffer
- * @v netdev Network device
* @v ll_source Link-layer source address
* @ret rc Return status code
*
* This method takes ownership of the I/O buffer.
*/
- int ( * rx ) ( struct io_buffer *iobuf, struct net_device *netdev,
- const void *ll_source );
+ int ( * rx ) ( struct eapol_supplicant *supplicant,
+ struct io_buffer *iobuf, const void *ll_source );
};
/** EAPoL handler table */