⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 cardif_generic.c

📁 Linux dot1x认证的实现
💻 C
📖 第 1 页 / 共 2 页
字号:
 * interface, we should return an error.  We should return a different error * if we have a problem sending the frame. * ******************************************/int cardif_sendframe(struct interface_data *thisint){  char nomac[] = {0x00, 0x00, 0x00, 0x00, 0x00, 0x00};  struct gen_sock_data *sockData;  struct config_network *network_data;  sockData = thisint->sockData;  if (thisint == NULL) return XEMALLOC;  if (thisint->sendframe == NULL)    {      debug_printf(DEBUG_NORMAL, "Cannot send NULL frame!\n");      return XENOFRAMES;    }  if (thisint->send_size == 0) return XENONE;  network_data = config_get_network_config();  // The frame we are handed in shouldn't have a src/dest, so put it in.  memcpy(&thisint->sendframe[0], &thisint->dest_mac[0], 6);  memcpy(&thisint->sendframe[6], &thisint->source_mac[0], 6);  if (memcmp(nomac, (char *)&network_data->dest_mac[0], 6) != 0)    {      debug_printf(DEBUG_INT, "Static MAC address defined!  Using it!\n");      memcpy(&thisint->sendframe[0], &network_data->dest_mac[0], 6);    }  debug_printf(DEBUG_EVERYTHING, "Frame to be sent : \n");  debug_hex_dump(DEBUG_EVERYTHING, thisint->sendframe, thisint->send_size);  if (eth_send(sockData->eth, thisint->sendframe, thisint->send_size) < 0)    {      debug_printf(DEBUG_NORMAL, "Error sending frame!\n");      return -1;    }  return XENONE;  // We didn't get an error.}/****************************************** *  * Get a frame from the network.  Since we are in promisc. mode, we will get * frames that aren't intended for us.  So, check the frame, determine if it * is something we care about, and act accordingly. * ******************************************/int cardif_getframe(struct interface_data *thisint){  int pcap_ret_val = 0;  char dot1x_default_dest[6] = {0x01, 0x80, 0xc2, 0x00, 0x00, 0x03};  struct gen_sock_data *sockData;  uint8_t resultframe[1520];  sockData = thisint->sockData;  pcap_ret_val = pcap_dispatch(sockData->pcap_descr, 1, 			       (pcap_handler)packet_catch, NULL);  if (pcap_ret_val == 1)    {      // We have more frames available.      memcpy(resultframe, packet_ptr, packet_header->len);      more_frames_avail = 1;    } else {      debug_printf(DEBUG_EVERYTHING, "Didn't get a frame.\n");      more_frames_avail = 0;    }    debug_printf(DEBUG_EVERYTHING, "Got Frame : \n");  debug_hex_dump(DEBUG_EVERYTHING, resultframe, packet_header->len);  snmp_dot1xSuppEapolFramesRx();  // Make sure that the frame we got is for us..  if ((memcmp(&thisint->source_mac[0], &resultframe[0], 6) == 0) ||      ((memcmp(&resultframe[0], &dot1x_default_dest[0], 6) == 0) &&       (memcmp(&resultframe[6], &thisint->source_mac[0], 6) != 0)))    {      thisint->recv_size = packet_header->len;      memcpy(thisint->recvframe, resultframe, packet_header->len);      return packet_header->len;    }  // Otherwise it isn't for us.   debug_printf(DEBUG_INT, "Got a frame, not for us.\n");  return XENOFRAMES;}/****************************************** *  * Return true if there is a frame in the queue to be processed. * ******************************************/int cardif_frameavail(struct interface_data *thisint){  return more_frames_avail;}/****************************************** * * Validate an interface, based on if it has a MAC address. * ******************************************/int cardif_validate(char *interface){  // Assume that the interface is valid, or the user wouldn't have  // told us to use it. ;)  return TRUE;}/****************************************** * * Get the name of an interface, based on an index value. * ******************************************/int cardif_get_int(int index, char *retInterface){  // Enumerating interfaces isn't available with this driver!  return XNOMOREINTS;}/******************************************************* * * Check to see if an interface is wireless.  On linux, we look in * /proc/net/wireless to see if the interface is registered with the * wireless extensions. * *******************************************************/int cardif_int_is_wireless(char *interface){  // Not ever going to be wireless!  return FALSE;}/****************************************************** * * Stub for wireless scan. * *****************************************************/int cardif_start_wireless_scan(struct interface_data *thisint){  return XENONE;}/***************************************************** * * Stub for encryption capabilities. * *****************************************************/void cardif_get_abilities(struct interface_data *thisint){  thisint->enc_capa = 0;}/***************************************************** * * Stub for interface attachment * *****************************************************/void cardif_wait_for_int(char *intname){}/***************************************************** * * Stub for clearing encryption keys * *****************************************************/int cardif_clear_keys(struct interface_data *intdata){  return XENONE;}/***************************************************** * * Stub for wireless disassociation * *****************************************************/int cardif_disassociate(struct interface_data *thisint, int reason_code){  return XENONE;}/***************************************************** * * Stub for passive scan timer callback * *****************************************************/void cardif_passive_scan_timeout(struct interface_data *ctx){}/***************************************************** * * Stub for deleting an encryption key * *****************************************************/int cardif_delete_key(struct interface_data *intdata, int key_idx, int set_tx){  return XENONE;}/***************************************************** * * Stub for disabling WPA association state * *****************************************************/int cardif_disable_wpa_state(struct interface_data *thisint){  return XENONE;}/***************************************************** * * Stub for wireless scanning * *****************************************************/int cardif_do_wireless_scan(struct interface_data *thisint, char passive){  return XENONE;}/***************************************************** * * Stub for disabling encryption * *****************************************************/int cardif_enc_disable(struct interface_data *intdata){  return XENONE;}/***************************************************** * * Stub for reassociating to a wireless network * *****************************************************/void cardif_reassociate(struct interface_data *intiface, uint8_t reason){}/***************************************************** * * Stub for setting WEP keys * *****************************************************/int cardif_set_wep_key(struct interface_data *thisint, uint8_t *key,                       int keylen, int index){}/***************************************************** * * Stub for disassociate/roam * *****************************************************/int cardif_wep_associate(struct interface_data *thisint, int zeros){  return XENONE;}/***************************************************** * * Stub for setting CCMP keys * *****************************************************/int cardif_set_ccmp_key(struct interface_data *thisint, char *addr, int keyidx,                        int settx, char *key, int keylen){  return XENONE;}/***************************************************** * * Stub for setting TKIP keys * *****************************************************/int cardif_set_tkip_key(struct interface_data *thisint, char *addr,			int keyidx, int settx, char *key, int keylen){  return XENONE;}/***************************************************** * * Stub for enabling/disabling rx of unencrypted frames on an interface * *****************************************************/int cardif_drop_unencrypted(struct interface_data *intdata, char endis){  return XENONE;}/***************************************************** * * Stub for getting the WPA-IE * *****************************************************/int cardif_get_wpa_ie(struct interface_data *intdata, char *iedata, int *ielen){  return XENONE;}/***************************************************** * * Stub for getting the RSN-IE * *****************************************************/int cardif_get_wpa2_ie(struct interface_data *intdata, char *iedata, int *ielen){  return XENONE;}/***************************************************** * * Stub for enabling/disabling countermeasures on an interface * *****************************************************/int cardif_countermeasures(struct interface_data *intdata, char endis){  return XENONE;}#endif

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -