📄 eap_tnc.h
字号:
/* * This software is Copyright (C) 2006,2007 FH Hannover * * Portions of this code unrelated to FreeRADIUS are available * separately under a commercial license. If you require an * implementation of EAP-TNC that is not under the GPLv2, please * contact tnc@inform.fh-hannover.de for details. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA * */#ifndef _EAP_TNC_H#define _EAP_TNC_H#include "eap.h"#define PW_TNC_REQUEST 1#define PW_TNC_RESPONSE 2#define PW_TNC_SUCCESS 3#define PW_TNC_FAILURE 4#define PW_TNC_MAX_CODES 4#define TNC_HEADER_LEN 4#define TNC_CHALLENGE_LEN 16#define TNC_START_LEN 8#define TNC_PACKET_LENGTH_WITHOUT_DATA_LENGTH 6#define TNC_PACKET_LENGTH 10#define TNC_DATA_LENGTH_LENGTH 4#define TNC_FLAGS_VERSION_LENGTH 1typedef unsigned int VlanAccessMode;#define VLAN_ISOLATE 97#define VLAN_ACCESS 2/* **** * EAP - MD5 doesnot specify code, id & length but chap specifies them, * for generalization purpose, complete header should be sent * and not just value_size, value and name. * future implementation. * * Huh? What does that mean? *//* * * MD5 Packet Format in EAP Type-Data * --- ------ ------ -- --- --------- * 0 1 2 3 * 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ * | Value-Size | Value ... * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ * | Name ... * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ * * EAP-TNC Packet Format in EAP Type-Data * * 0 1 2 3 * 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ * | Flags |Ver | Data Length ... * |L M S R R|=1 | * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ * |... | Data ... * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ * *//* eap packet structure */typedef struct tnc_packet_t {/* uint8_t code; uint8_t id; uint16_t length;*/ uint8_t flags_ver; uint32_t data_length; uint8_t *data;} tnc_packet_t;typedef struct tnc_packet { uint8_t code; uint8_t id; uint16_t length; uint8_t flags_ver; uint32_t data_length; uint8_t *data;} TNC_PACKET;#define TNC_START(x) (((x) & 0x20) != 0)#define TNC_MORE_FRAGMENTS(x) (((x) & 0x40) != 0)#define TNC_LENGTH_INCLUDED(x) (((x) & 0x80) != 0)#define TNC_RESERVED_EQ_NULL(x) (((x) & 0x10) == 0 && ((x) & 0x8) == 0)#define TNC_VERSION_EQ_ONE(x) (((x) & 0x07) == 1)#define SET_START(x) ((x) | (0x20))#define SET_MORE_FRAGMENTS(x) ((x) | (0x40))#define SET_LENGTH_INCLUDED(x) ((x) | (0x80))/* function declarations here */TNC_PACKET *eaptnc_alloc(void);void eaptnc_free(TNC_PACKET **tnc_packet_ptr);int eaptnc_compose(EAP_DS *auth, TNC_PACKET *reply);TNC_PACKET *eaptnc_extract(EAP_DS *auth);int eaptnc_verify(TNC_PACKET *pkt, VALUE_PAIR* pwd, uint8_t *ch);#endif /*_EAP_TNC_H*/
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -