Changeset 1027:0117a7746b21 in freeDiameter for extensions/app_diameap/diameap_eappacket.c
- Timestamp:
- Apr 15, 2013, 4:17:07 PM (11 years ago)
- Branch:
- default
- Phase:
- public
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
extensions/app_diameap/diameap_eappacket.c
r974 r1027 39 39 #include "libdiameap.h" 40 40 41 int diameap_eap_get_code(struct eap_packet eappacket, eap_code * eapcode)41 int diameap_eap_get_code(struct eap_packet *eappacket, eap_code * eapcode) 42 42 { 43 43 TRACE_ENTRY("%p %p",eappacket,eapcode); 44 44 45 if (eappacket .data == NULL)45 if (eappacket->data == NULL) 46 46 { 47 47 *eapcode = ERROR; … … 49 49 return EINVAL; 50 50 } 51 if (eappacket .length < 1)51 if (eappacket->length < 1) 52 52 { 53 53 *eapcode = ERROR; 54 TRACE_DEBUG(INFO,"%sEAP packet length %d : no EAP Code to return.",DIAMEAP_EXTENSION, eappacket .length);55 return EINVAL; 56 } 57 *eapcode = G8(eappacket .data);58 return 0; 59 } 60 61 int diameap_eap_get_identifier(struct eap_packet eappacket, u8 * identifier)54 TRACE_DEBUG(INFO,"%sEAP packet length %d : no EAP Code to return.",DIAMEAP_EXTENSION, eappacket->length); 55 return EINVAL; 56 } 57 *eapcode = G8(eappacket->data); 58 return 0; 59 } 60 61 int diameap_eap_get_identifier(struct eap_packet *eappacket, u8 * identifier) 62 62 { 63 63 TRACE_ENTRY("%p %p",eappacket,identifier); 64 64 *identifier = 0; 65 if (eappacket .data == NULL)65 if (eappacket->data == NULL) 66 66 { 67 67 TRACE_DEBUG(INFO,"%sEmpty data in EAP packet: no Identifier field to return.",DIAMEAP_EXTENSION); 68 68 return EINVAL; 69 69 } 70 if (eappacket .length < 2)71 { 72 TRACE_DEBUG(INFO,"%sEAP packet length %d : no Identifier field to return.",DIAMEAP_EXTENSION, eappacket .length);73 return EINVAL; 74 } 75 *identifier = G8(eappacket .data + 1);76 return 0; 77 } 78 79 int diameap_eap_get_length(struct eap_packet eappacket, u16 *length)70 if (eappacket->length < 2) 71 { 72 TRACE_DEBUG(INFO,"%sEAP packet length %d : no Identifier field to return.",DIAMEAP_EXTENSION, eappacket->length); 73 return EINVAL; 74 } 75 *identifier = G8(eappacket->data + 1); 76 return 0; 77 } 78 79 int diameap_eap_get_length(struct eap_packet *eappacket, u16 *length) 80 80 { 81 81 TRACE_ENTRY("%p %p",eappacket,length); 82 82 *length = 0; 83 83 84 if (eappacket .data == NULL)84 if (eappacket->data == NULL) 85 85 { 86 86 TRACE_DEBUG(INFO,"%sEmpty data in EAP packet: no Length field to return.",DIAMEAP_EXTENSION); 87 87 return EINVAL; 88 88 } 89 if (eappacket .ulength < 4)90 { 91 TRACE_DEBUG(INFO,"%sEAP packet length %d : no Length field to return.",DIAMEAP_EXTENSION, eappacket .length);92 return EINVAL; 93 } 94 *length = (u16) G16BIGE((eappacket .data + 2));95 return 0; 96 } 97 98 int diameap_eap_get_packetlength(struct eap_packet eappacket, u16 *length)89 if (eappacket->ulength < 4) 90 { 91 TRACE_DEBUG(INFO,"%sEAP packet length %d : no Length field to return.",DIAMEAP_EXTENSION, eappacket->length); 92 return EINVAL; 93 } 94 *length = (u16) G16BIGE((eappacket->data + 2)); 95 return 0; 96 } 97 98 int diameap_eap_get_packetlength(struct eap_packet *eappacket, u16 *length) 99 99 { 100 100 TRACE_ENTRY("%p %p",eappacket,length); 101 if (eappacket .data == NULL)101 if (eappacket->data == NULL) 102 102 { 103 103 TRACE_DEBUG(INFO,"%sEmpty data in EAP packet: no Length field to return.",DIAMEAP_EXTENSION); 104 104 return EINVAL; 105 105 } 106 *length = eappacket .ulength;107 return 0; 108 } 109 110 int diameap_eap_get_type(struct eap_packet eappacket, eap_type * eaptype)106 *length = eappacket->ulength; 107 return 0; 108 } 109 110 int diameap_eap_get_type(struct eap_packet *eappacket, eap_type * eaptype) 111 111 { 112 112 TRACE_ENTRY("%p %p",eappacket,eaptype); 113 113 *eaptype = 0; 114 114 115 if (eappacket .data == NULL)115 if (eappacket->data == NULL) 116 116 { 117 117 TRACE_DEBUG(INFO,"%sEmpty data in EAP packet: no EAP Type field to return.",DIAMEAP_EXTENSION); 118 118 return EINVAL; 119 119 } 120 if (eappacket .length < 5)121 { 122 TRACE_DEBUG(INFO,"%sEAP packet length %d : no EAP Type field to return.",DIAMEAP_EXTENSION, eappacket .length);123 return EINVAL; 124 } 125 *eaptype = (u32) G8(eappacket .data + 4);120 if (eappacket->length < 5) 121 { 122 TRACE_DEBUG(INFO,"%sEAP packet length %d : no EAP Type field to return.",DIAMEAP_EXTENSION, eappacket->length); 123 return EINVAL; 124 } 125 *eaptype = (u32) G8(eappacket->data + 4); 126 126 return 0; 127 127 } … … 129 129 boolean diameap_eap_check_code(eap_code code) 130 130 { 131 TRACE_ENTRY("% p",code);131 TRACE_ENTRY("%d",code); 132 132 if (code != EAP_REQUEST && code != EAP_RESPONSE && code != EAP_SUCCESS 133 133 && code != EAP_FAILURE) … … 139 139 } 140 140 141 int diameap_eap_get_packetdata(struct eap_packet eappacket, u8 ** data,141 int diameap_eap_get_packetdata(struct eap_packet *eappacket, u8 ** data, 142 142 int *len) 143 143 { 144 144 TRACE_ENTRY("%p %p",eappacket,data); 145 if (eappacket .length > 0)146 { 147 *data = malloc(sizeof(u8) * eappacket .length);148 U8COPY(*data,0,eappacket .length,eappacket.data);149 *len = eappacket .length;145 if (eappacket->length > 0) 146 { 147 *data = malloc(sizeof(u8) * eappacket->length); 148 U8COPY(*data,0,eappacket->length,eappacket->data); 149 *len = eappacket->length; 150 150 return 0; 151 151 } 152 TRACE_DEBUG(INFO,"%sEAP packet length=%d: empty or wrong EAP Packet.",DIAMEAP_EXTENSION, eappacket .length);152 TRACE_DEBUG(INFO,"%sEAP packet length=%d: empty or wrong EAP Packet.",DIAMEAP_EXTENSION, eappacket->length); 153 153 *data = NULL; 154 154 *len = 0; … … 156 156 } 157 157 158 int diameap_eap_get_data(struct eap_packet eappacket, u8 ** data, int * len)158 int diameap_eap_get_data(struct eap_packet *eappacket, u8 ** data, int * len) 159 159 { 160 160 TRACE_ENTRY("%p %p",eappacket,data); 161 if (eappacket .length > 5)162 { 163 *data = malloc(sizeof(u8) * (eappacket.length - 5));164 U8COPY(*data,0,(eappacket .length-5),(eappacket.data+5));165 *len = eappacket .length - 5;161 if (eappacket->length > 5) 162 { 163 CHECK_MALLOC( *data = malloc(sizeof(u8) * (eappacket->length - 5)) ); 164 U8COPY(*data,0,(eappacket->length-5),(eappacket->data+5)); 165 *len = eappacket->length - 5; 166 166 return 0; 167 167 } 168 TRACE_DEBUG(INFO,"%sEAP packet length=%d: empty or wrong EAP Packet.",DIAMEAP_EXTENSION, eappacket .length);168 TRACE_DEBUG(INFO,"%sEAP packet length=%d: empty or wrong EAP Packet.",DIAMEAP_EXTENSION, eappacket->length); 169 169 *data = NULL; 170 170 *len = 0; … … 173 173 } 174 174 175 void diameap_eap_dump(int level, struct eap_packet eappacket)176 { 177 TRACE_ENTRY("% p%p",level,eappacket);175 void diameap_eap_dump(int level, struct eap_packet *eappacket) 176 { 177 TRACE_ENTRY("%d %p",level,eappacket); 178 178 if (!TRACE_BOOL(level)) 179 179 return; 180 180 181 if (eappacket .data == NULL)181 if (eappacket->data == NULL) 182 182 return; 183 if (eappacket .length < 5)183 if (eappacket->length < 5) 184 184 return; 185 if (eappacket .ulength < 5)185 if (eappacket->ulength < 5) 186 186 return; 187 187 … … 215 215 CHECK_FCT_DO(diameap_eap_get_length(eappacket,&length),return); 216 216 fd_log_debug("\t -Length : %d ", (unsigned int)length); 217 if (eappacket .length > 4)217 if (eappacket->length > 4) 218 218 { 219 219 eap_type type; … … 221 221 fd_log_debug("\t -Type : %d ", type); 222 222 } 223 if (eappacket .length > 5)223 if (eappacket->length > 5) 224 224 { 225 225 char buf[1024]; 226 226 snprintf(buf, sizeof(buf), "\t -Data : "); 227 for (i = 5; i < eappacket .length && i < 30; i++)227 for (i = 5; i < eappacket->length && i < 30; i++) 228 228 { 229 snprintf(buf+strlen(buf), sizeof(buf)-strlen(buf), "%02x ", G8(eappacket .data + i));229 snprintf(buf+strlen(buf), sizeof(buf)-strlen(buf), "%02x ", G8(eappacket->data + i)); 230 230 } 231 if(i+1<eappacket .length)231 if(i+1<eappacket->length) 232 232 snprintf(buf+strlen(buf), sizeof(buf)-strlen(buf), "[...] (len=%d)",(unsigned int) length); 233 233 fd_log_debug("%s", buf); … … 240 240 { 241 241 242 TRACE_ENTRY("% p %p %p %p %p%p", code, id, type, data, dataLength,eappacket);242 TRACE_ENTRY("%d %hhu %d %p %hu %p", code, id, type, data, dataLength,eappacket); 243 243 244 244 int length = 0;
Note: See TracChangeset
for help on using the changeset viewer.