]> git.karo-electronics.de Git - linux-beck.git/commitdiff
staging: rtl8188eu: Remove unused functons defined in rtw_br_ext.c
authornavin patidar <navin.patidar@gmail.com>
Mon, 16 Jun 2014 16:05:39 +0000 (21:35 +0530)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Thu, 19 Jun 2014 22:37:17 +0000 (15:37 -0700)
This patch removes some functions defined in rtw_br_ext.c, which have become
obsolete after removal of rtw_br_client_tx().

Signed-off-by: navin patidar <navin.patidar@gmail.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
drivers/staging/rtl8188eu/core/rtw_br_ext.c
drivers/staging/rtl8188eu/include/usb_osintf.h

index 70b8f0719703fd2b070d32d897b56ff71ce6aabb..86899125ea59f485e7bcbcc099e37cc986e956bd 100644 (file)
@@ -103,27 +103,6 @@ static inline int __nat25_add_pppoe_tag(struct sk_buff *skb, struct pppoe_tag *t
        return data_len;
 }
 
-static int skb_pull_and_merge(struct sk_buff *skb, unsigned char *src, int len)
-{
-       int tail_len;
-       unsigned long end, tail;
-
-       if ((src+len) > skb_tail_pointer(skb) || skb->len < len)
-               return -1;
-
-       tail = (unsigned long)skb_tail_pointer(skb);
-       end = (unsigned long)src+len;
-       if (tail < end)
-               return -1;
-
-       tail_len = (int)(tail-end);
-       if (tail_len > 0)
-               memmove(src, src+len, tail_len);
-
-       skb_trim(skb, skb->len-len);
-       return 0;
-}
-
 static inline unsigned long __nat25_timeout(struct adapter *priv)
 {
        unsigned long timeout;
@@ -196,91 +175,6 @@ static inline void __nat25_generate_pppoe_network_addr(unsigned char *networkAdd
        memcpy(networkAddr+3, (unsigned char *)ac_mac, 6);
 }
 
-static  void __nat25_generate_ipv6_network_addr(unsigned char *networkAddr,
-                               __be32 *ipAddr)
-{
-       memset(networkAddr, 0, MAX_NETWORK_ADDR_LEN);
-
-       networkAddr[0] = NAT25_IPV6;
-       memcpy(networkAddr+1, (unsigned char *)ipAddr, 16);
-}
-
-static unsigned char *scan_tlv(unsigned char *data, int len, unsigned char tag, unsigned char len8b)
-{
-       while (len > 0) {
-               if (*data == tag && *(data+1) == len8b && len >= len8b*8)
-                       return data+2;
-
-               len -= (*(data+1))*8;
-               data += (*(data+1))*8;
-       }
-       return NULL;
-}
-
-static int update_nd_link_layer_addr(unsigned char *data, int len, unsigned char *replace_mac)
-{
-       struct icmp6hdr *icmphdr = (struct icmp6hdr *)data;
-       unsigned char *mac;
-
-       if (icmphdr->icmp6_type == NDISC_ROUTER_SOLICITATION) {
-               if (len >= 8) {
-                       mac = scan_tlv(&data[8], len-8, 1, 1);
-                       if (mac) {
-                               _DEBUG_INFO("Router Solicitation, replace MAC From: %02x:%02x:%02x:%02x:%02x:%02x, To: %02x:%02x:%02x:%02x:%02x:%02x\n",
-                                       mac[0], mac[1], mac[2], mac[3], mac[4], mac[5],
-                                       replace_mac[0], replace_mac[1], replace_mac[2], replace_mac[3], replace_mac[4], replace_mac[5]);
-                               memcpy(mac, replace_mac, 6);
-                               return 1;
-                       }
-               }
-       } else if (icmphdr->icmp6_type == NDISC_ROUTER_ADVERTISEMENT) {
-               if (len >= 16) {
-                       mac = scan_tlv(&data[16], len-16, 1, 1);
-                       if (mac) {
-                               _DEBUG_INFO("Router Advertisement, replace MAC From: %02x:%02x:%02x:%02x:%02x:%02x, To: %02x:%02x:%02x:%02x:%02x:%02x\n",
-                                       mac[0], mac[1], mac[2], mac[3], mac[4], mac[5],
-                                       replace_mac[0], replace_mac[1], replace_mac[2], replace_mac[3], replace_mac[4], replace_mac[5]);
-                               memcpy(mac, replace_mac, 6);
-                               return 1;
-                       }
-               }
-       } else if (icmphdr->icmp6_type == NDISC_NEIGHBOUR_SOLICITATION) {
-               if (len >= 24) {
-                       mac = scan_tlv(&data[24], len-24, 1, 1);
-                       if (mac) {
-                               _DEBUG_INFO("Neighbor Solicitation, replace MAC From: %02x:%02x:%02x:%02x:%02x:%02x, To: %02x:%02x:%02x:%02x:%02x:%02x\n",
-                                       mac[0], mac[1], mac[2], mac[3], mac[4], mac[5],
-                                       replace_mac[0], replace_mac[1], replace_mac[2], replace_mac[3], replace_mac[4], replace_mac[5]);
-                               memcpy(mac, replace_mac, 6);
-                               return 1;
-                       }
-               }
-       } else if (icmphdr->icmp6_type == NDISC_NEIGHBOUR_ADVERTISEMENT) {
-               if (len >= 24) {
-                       mac = scan_tlv(&data[24], len-24, 2, 1);
-                       if (mac) {
-                               _DEBUG_INFO("Neighbor Advertisement, replace MAC From: %02x:%02x:%02x:%02x:%02x:%02x, To: %02x:%02x:%02x:%02x:%02x:%02x\n",
-                                       mac[0], mac[1], mac[2], mac[3], mac[4], mac[5],
-                                       replace_mac[0], replace_mac[1], replace_mac[2], replace_mac[3], replace_mac[4], replace_mac[5]);
-                               memcpy(mac, replace_mac, 6);
-                               return 1;
-                       }
-               }
-       } else if (icmphdr->icmp6_type == NDISC_REDIRECT) {
-               if (len >= 40) {
-                       mac = scan_tlv(&data[40], len-40, 2, 1);
-                       if (mac) {
-                               _DEBUG_INFO("Redirect,  replace MAC From: %02x:%02x:%02x:%02x:%02x:%02x, To: %02x:%02x:%02x:%02x:%02x:%02x\n",
-                                       mac[0], mac[1], mac[2], mac[3], mac[4], mac[5],
-                                       replace_mac[0], replace_mac[1], replace_mac[2], replace_mac[3], replace_mac[4], replace_mac[5]);
-                               memcpy(mac, replace_mac, 6);
-                               return 1;
-                       }
-               }
-       }
-       return 0;
-}
-
 static inline int __nat25_network_hash(unsigned char *networkAddr)
 {
        if (networkAddr[0] == NAT25_IPV4) {
@@ -349,88 +243,6 @@ static inline void __network_hash_unlink(struct nat25_network_db_entry *ent)
        ent->pprev_hash = NULL;
 }
 
-static int __nat25_db_network_lookup_and_replace(struct adapter *priv,
-                               struct sk_buff *skb, unsigned char *networkAddr)
-{
-       struct nat25_network_db_entry *db;
-       spin_lock_bh(&priv->br_ext_lock);
-
-       db = priv->nethash[__nat25_network_hash(networkAddr)];
-       while (db != NULL) {
-               if (!memcmp(db->networkAddr, networkAddr, MAX_NETWORK_ADDR_LEN)) {
-                       if (!__nat25_has_expired(priv, db)) {
-                               /*  replace the destination mac address */
-                               memcpy(skb->data, db->macAddr, ETH_ALEN);
-                               atomic_inc(&db->use_count);
-
-                               DEBUG_INFO("NAT25: Lookup M:%02x%02x%02x%02x%02x%02x N:%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x"
-                                                       "%02x%02x%02x%02x%02x%02x\n",
-                                       db->macAddr[0],
-                                       db->macAddr[1],
-                                       db->macAddr[2],
-                                       db->macAddr[3],
-                                       db->macAddr[4],
-                                       db->macAddr[5],
-                                       db->networkAddr[0],
-                                       db->networkAddr[1],
-                                       db->networkAddr[2],
-                                       db->networkAddr[3],
-                                       db->networkAddr[4],
-                                       db->networkAddr[5],
-                                       db->networkAddr[6],
-                                       db->networkAddr[7],
-                                       db->networkAddr[8],
-                                       db->networkAddr[9],
-                                       db->networkAddr[10],
-                                       db->networkAddr[11],
-                                       db->networkAddr[12],
-                                       db->networkAddr[13],
-                                       db->networkAddr[14],
-                                       db->networkAddr[15],
-                                       db->networkAddr[16]);
-                       }
-                       spin_unlock_bh(&priv->br_ext_lock);
-                       return 1;
-               }
-               db = db->next_hash;
-       }
-       spin_unlock_bh(&priv->br_ext_lock);
-       return 0;
-}
-
-static void __nat25_db_network_insert(struct adapter *priv,
-                               unsigned char *macAddr, unsigned char *networkAddr)
-{
-       struct nat25_network_db_entry *db;
-       int hash;
-
-       spin_lock_bh(&priv->br_ext_lock);
-       hash = __nat25_network_hash(networkAddr);
-       db = priv->nethash[hash];
-       while (db != NULL) {
-               if (!memcmp(db->networkAddr, networkAddr, MAX_NETWORK_ADDR_LEN)) {
-                       ether_addr_copy(db->macAddr, macAddr);
-                       db->ageing_timer = jiffies;
-                       spin_unlock_bh(&priv->br_ext_lock);
-                       return;
-               }
-               db = db->next_hash;
-       }
-       db = (struct nat25_network_db_entry *) rtw_malloc(sizeof(*db));
-       if (db == NULL) {
-               spin_unlock_bh(&priv->br_ext_lock);
-               return;
-       }
-       memcpy(db->networkAddr, networkAddr, MAX_NETWORK_ADDR_LEN);
-       ether_addr_copy(db->macAddr, macAddr);
-       atomic_set(&db->use_count, 1);
-       db->ageing_timer = jiffies;
-
-       __network_hash_link(priv, db, hash);
-
-       spin_unlock_bh(&priv->br_ext_lock);
-}
-
 /*
  *     NAT2.5 interface
  */
@@ -491,545 +303,6 @@ void nat25_db_expire(struct adapter *priv)
        spin_unlock_bh(&priv->br_ext_lock);
 }
 
-int nat25_db_handle(struct adapter *priv, struct sk_buff *skb, int method)
-{
-       unsigned short protocol;
-       unsigned char networkAddr[MAX_NETWORK_ADDR_LEN];
-       unsigned int tmp;
-
-       if (skb == NULL)
-               return -1;
-
-       if ((method <= NAT25_MIN) || (method >= NAT25_MAX))
-               return -1;
-
-       protocol = be16_to_cpu(*((__be16 *)(skb->data + 2 * ETH_ALEN)));
-
-       /*---------------------------------------------------*/
-       /*                 Handle IP frame                   */
-       /*---------------------------------------------------*/
-       if (protocol == ETH_P_IP) {
-               struct iphdr *iph = (struct iphdr *)(skb->data + ETH_HLEN);
-
-               if (((unsigned char *)(iph) + (iph->ihl<<2)) >= (skb->data + ETH_HLEN + skb->len)) {
-                       DEBUG_WARN("NAT25: malformed IP packet !\n");
-                       return -1;
-               }
-
-               switch (method) {
-               case NAT25_CHECK:
-                       return -1;
-               case NAT25_INSERT:
-                       /* some multicast with source IP is all zero, maybe other case is illegal */
-                       /* in class A, B, C, host address is all zero or all one is illegal */
-                       if (iph->saddr == 0)
-                               return 0;
-                       tmp = be32_to_cpu(iph->saddr);
-                       DEBUG_INFO("NAT25: Insert IP, SA =%08x, DA =%08x\n", tmp, iph->daddr);
-                       __nat25_generate_ipv4_network_addr(networkAddr, &tmp);
-                       /* record source IP address and , source mac address into db */
-                       __nat25_db_network_insert(priv, skb->data+ETH_ALEN, networkAddr);
-
-                       return 0;
-               case NAT25_LOOKUP:
-                       DEBUG_INFO("NAT25: Lookup IP, SA =%08x, DA =%08x\n", iph->saddr, iph->daddr);
-                       tmp = be32_to_cpu(iph->daddr);
-                       __nat25_generate_ipv4_network_addr(networkAddr, &tmp);
-
-                       if (!__nat25_db_network_lookup_and_replace(priv, skb, networkAddr)) {
-                               if (*((unsigned char *)&iph->daddr + 3) == 0xff) {
-                                       /*  L2 is unicast but L3 is broadcast, make L2 bacome broadcast */
-                                       DEBUG_INFO("NAT25: Set DA as broadcast\n");
-                                       memset(skb->data, 0xff, ETH_ALEN);
-                               } else {
-                                       /*  forward unknown IP packet to upper TCP/IP */
-                                       DEBUG_INFO("NAT25: Replace DA with BR's MAC\n");
-                                       if ((*(u32 *)priv->br_mac) == 0 && (*(u16 *)(priv->br_mac+4)) == 0) {
-                                               netdev_info(skb->dev,
-                                                               "Re-init netdev_br_init() due to br_mac == 0!\n");
-                                               netdev_br_init(priv->pnetdev);
-                                       }
-                                       memcpy(skb->data, priv->br_mac, ETH_ALEN);
-                               }
-                       }
-                       return 0;
-               default:
-                       return -1;
-               }
-       } else if (protocol == ETH_P_ARP) {
-               /*---------------------------------------------------*/
-               /*                 Handle ARP frame                  */
-               /*---------------------------------------------------*/
-               struct arphdr *arp = (struct arphdr *)(skb->data + ETH_HLEN);
-               unsigned char *arp_ptr = (unsigned char *)(arp + 1);
-               unsigned int *sender, *target;
-
-               if (arp->ar_pro != __constant_htons(ETH_P_IP)) {
-                       DEBUG_WARN("NAT25: arp protocol unknown (%4x)!\n", be16_to_cpu(arp->ar_pro));
-                       return -1;
-               }
-
-               switch (method) {
-               case NAT25_CHECK:
-                       return 0;       /*  skb_copy for all ARP frame */
-               case NAT25_INSERT:
-                       DEBUG_INFO("NAT25: Insert ARP, MAC =%02x%02x%02x%02x%02x%02x\n", arp_ptr[0],
-                               arp_ptr[1], arp_ptr[2], arp_ptr[3], arp_ptr[4], arp_ptr[5]);
-
-                       /*  change to ARP sender mac address to wlan STA address */
-                       memcpy(arp_ptr, GET_MY_HWADDR(priv), ETH_ALEN);
-                       arp_ptr += arp->ar_hln;
-                       sender = (unsigned int *)arp_ptr;
-                       __nat25_generate_ipv4_network_addr(networkAddr, sender);
-                       __nat25_db_network_insert(priv, skb->data+ETH_ALEN, networkAddr);
-                       return 0;
-               case NAT25_LOOKUP:
-                       DEBUG_INFO("NAT25: Lookup ARP\n");
-
-                       arp_ptr += arp->ar_hln;
-                       sender = (unsigned int *)arp_ptr;
-                       arp_ptr += (arp->ar_hln + arp->ar_pln);
-                       target = (unsigned int *)arp_ptr;
-                       __nat25_generate_ipv4_network_addr(networkAddr, target);
-                       __nat25_db_network_lookup_and_replace(priv, skb, networkAddr);
-                       /*  change to ARP target mac address to Lookup result */
-                       arp_ptr = (unsigned char *)(arp + 1);
-                       arp_ptr += (arp->ar_hln + arp->ar_pln);
-                       memcpy(arp_ptr, skb->data, ETH_ALEN);
-                       return 0;
-               default:
-                       return -1;
-               }
-       } else if ((protocol == ETH_P_IPX) ||
-                  (protocol <= ETH_FRAME_LEN)) {
-               /*---------------------------------------------------*/
-               /*         Handle IPX and Apple Talk frame           */
-               /*---------------------------------------------------*/
-               unsigned char ipx_header[2] = {0xFF, 0xFF};
-               struct ipxhdr   *ipx = NULL;
-               struct elapaarp *ea = NULL;
-               struct ddpehdr  *ddp = NULL;
-               unsigned char *framePtr = skb->data + ETH_HLEN;
-
-               if (protocol == ETH_P_IPX) {
-                       DEBUG_INFO("NAT25: Protocol = IPX (Ethernet II)\n");
-                       ipx = (struct ipxhdr *)framePtr;
-               } else if (protocol <= ETH_FRAME_LEN) {
-                       if (!memcmp(ipx_header, framePtr, 2)) {
-                               DEBUG_INFO("NAT25: Protocol = IPX (Ethernet 802.3)\n");
-                               ipx = (struct ipxhdr *)framePtr;
-                       } else {
-                               unsigned char ipx_8022_type =  0xE0;
-                               unsigned char snap_8022_type = 0xAA;
-
-                               if (*framePtr == snap_8022_type) {
-                                       unsigned char ipx_snap_id[5] = {0x0, 0x0, 0x0, 0x81, 0x37};             /*  IPX SNAP ID */
-                                       unsigned char aarp_snap_id[5] = {0x00, 0x00, 0x00, 0x80, 0xF3}; /*  Apple Talk AARP SNAP ID */
-                                       unsigned char ddp_snap_id[5] = {0x08, 0x00, 0x07, 0x80, 0x9B};  /*  Apple Talk DDP SNAP ID */
-
-                                       framePtr += 3;  /*  eliminate the 802.2 header */
-
-                                       if (!memcmp(ipx_snap_id, framePtr, 5)) {
-                                               framePtr += 5;  /*  eliminate the SNAP header */
-
-                                               DEBUG_INFO("NAT25: Protocol = IPX (Ethernet SNAP)\n");
-                                               ipx = (struct ipxhdr *)framePtr;
-                                       } else if (!memcmp(aarp_snap_id, framePtr, 5)) {
-                                               framePtr += 5;  /*  eliminate the SNAP header */
-
-                                               ea = (struct elapaarp *)framePtr;
-                                       } else if (!memcmp(ddp_snap_id, framePtr, 5)) {
-                                               framePtr += 5;  /*  eliminate the SNAP header */
-
-                                               ddp = (struct ddpehdr *)framePtr;
-                                       } else {
-                                               DEBUG_WARN("NAT25: Protocol = Ethernet SNAP %02x%02x%02x%02x%02x\n", framePtr[0],
-                                                       framePtr[1], framePtr[2], framePtr[3], framePtr[4]);
-                                               return -1;
-                                       }
-                               } else if (*framePtr == ipx_8022_type) {
-                                       framePtr += 3;  /*  eliminate the 802.2 header */
-
-                                       if (!memcmp(ipx_header, framePtr, 2)) {
-                                               DEBUG_INFO("NAT25: Protocol = IPX (Ethernet 802.2)\n");
-                                               ipx = (struct ipxhdr *)framePtr;
-                                       } else {
-                                               return -1;
-                                       }
-                               } else {
-                                       return -1;
-                               }
-                       }
-               } else {
-                       return -1;
-               }
-
-               /*   IPX   */
-               if (ipx != NULL) {
-                       switch (method) {
-                       case NAT25_CHECK:
-                               if (!memcmp(skb->data+ETH_ALEN, ipx->ipx_source.node, ETH_ALEN))
-                                       DEBUG_INFO("NAT25: Check IPX skb_copy\n");
-                               return 0;
-                       case NAT25_INSERT:
-                               DEBUG_INFO("NAT25: Insert IPX, Dest =%08x,%02x%02x%02x%02x%02x%02x,%04x Source =%08x,%02x%02x%02x%02x%02x%02x,%04x\n",
-                                       ipx->ipx_dest.net,
-                                       ipx->ipx_dest.node[0],
-                                       ipx->ipx_dest.node[1],
-                                       ipx->ipx_dest.node[2],
-                                       ipx->ipx_dest.node[3],
-                                       ipx->ipx_dest.node[4],
-                                       ipx->ipx_dest.node[5],
-                                       ipx->ipx_dest.sock,
-                                       ipx->ipx_source.net,
-                                       ipx->ipx_source.node[0],
-                                       ipx->ipx_source.node[1],
-                                       ipx->ipx_source.node[2],
-                                       ipx->ipx_source.node[3],
-                                       ipx->ipx_source.node[4],
-                                       ipx->ipx_source.node[5],
-                                       ipx->ipx_source.sock);
-
-                               if (!memcmp(skb->data+ETH_ALEN, ipx->ipx_source.node, ETH_ALEN)) {
-                                       DEBUG_INFO("NAT25: Use IPX Net, and Socket as network addr\n");
-
-                                       __nat25_generate_ipx_network_addr_with_socket(networkAddr, &ipx->ipx_source.net, &ipx->ipx_source.sock);
-
-                                       /*  change IPX source node addr to wlan STA address */
-                                       memcpy(ipx->ipx_source.node, GET_MY_HWADDR(priv), ETH_ALEN);
-                               } else {
-                                       __nat25_generate_ipx_network_addr_with_node(networkAddr, &ipx->ipx_source.net, ipx->ipx_source.node);
-                               }
-                               __nat25_db_network_insert(priv, skb->data+ETH_ALEN, networkAddr);
-                               return 0;
-                       case NAT25_LOOKUP:
-                               if (!memcmp(GET_MY_HWADDR(priv), ipx->ipx_dest.node, ETH_ALEN)) {
-                                       DEBUG_INFO("NAT25: Lookup IPX, Modify Destination IPX Node addr\n");
-
-                                       __nat25_generate_ipx_network_addr_with_socket(networkAddr, &ipx->ipx_dest.net, &ipx->ipx_dest.sock);
-
-                                       __nat25_db_network_lookup_and_replace(priv, skb, networkAddr);
-
-                                       /*  replace IPX destination node addr with Lookup destination MAC addr */
-                                       memcpy(ipx->ipx_dest.node, skb->data, ETH_ALEN);
-                               } else {
-                                       __nat25_generate_ipx_network_addr_with_node(networkAddr, &ipx->ipx_dest.net, ipx->ipx_dest.node);
-
-                                       __nat25_db_network_lookup_and_replace(priv, skb, networkAddr);
-                               }
-                               return 0;
-                       default:
-                               return -1;
-                       }
-               } else if (ea != NULL) {
-                       /* Sanity check fields. */
-                       if (ea->hw_len != ETH_ALEN || ea->pa_len != AARP_PA_ALEN) {
-                               DEBUG_WARN("NAT25: Appletalk AARP Sanity check fail!\n");
-                               return -1;
-                       }
-
-                       switch (method) {
-                       case NAT25_CHECK:
-                               return 0;
-                       case NAT25_INSERT:
-                               /*  change to AARP source mac address to wlan STA address */
-                               memcpy(ea->hw_src, GET_MY_HWADDR(priv), ETH_ALEN);
-
-                               DEBUG_INFO("NAT25: Insert AARP, Source =%d,%d Destination =%d,%d\n",
-                                       ea->pa_src_net,
-                                       ea->pa_src_node,
-                                       ea->pa_dst_net,
-                                       ea->pa_dst_node);
-
-                               __nat25_generate_apple_network_addr(networkAddr, &ea->pa_src_net, &ea->pa_src_node);
-
-                               __nat25_db_network_insert(priv, skb->data+ETH_ALEN, networkAddr);
-
-                               return 0;
-                       case NAT25_LOOKUP:
-                               DEBUG_INFO("NAT25: Lookup AARP, Source =%d,%d Destination =%d,%d\n",
-                                       ea->pa_src_net,
-                                       ea->pa_src_node,
-                                       ea->pa_dst_net,
-                                       ea->pa_dst_node);
-
-                               __nat25_generate_apple_network_addr(networkAddr, &ea->pa_dst_net, &ea->pa_dst_node);
-
-                               __nat25_db_network_lookup_and_replace(priv, skb, networkAddr);
-
-                               /*  change to AARP destination mac address to Lookup result */
-                               memcpy(ea->hw_dst, skb->data, ETH_ALEN);
-                               return 0;
-                       default:
-                               return -1;
-                       }
-               } else if (ddp != NULL) {
-                       switch (method) {
-                       case NAT25_CHECK:
-                               return -1;
-                       case NAT25_INSERT:
-                               DEBUG_INFO("NAT25: Insert DDP, Source =%d,%d Destination =%d,%d\n",
-                                       ddp->deh_snet,
-                                       ddp->deh_snode,
-                                       ddp->deh_dnet,
-                                       ddp->deh_dnode);
-
-                               __nat25_generate_apple_network_addr(networkAddr, &ddp->deh_snet, &ddp->deh_snode);
-
-                               __nat25_db_network_insert(priv, skb->data+ETH_ALEN, networkAddr);
-
-                               return 0;
-                       case NAT25_LOOKUP:
-                               DEBUG_INFO("NAT25: Lookup DDP, Source =%d,%d Destination =%d,%d\n",
-                                       ddp->deh_snet,
-                                       ddp->deh_snode,
-                                       ddp->deh_dnet,
-                                       ddp->deh_dnode);
-                               __nat25_generate_apple_network_addr(networkAddr, &ddp->deh_dnet, &ddp->deh_dnode);
-                               __nat25_db_network_lookup_and_replace(priv, skb, networkAddr);
-                               return 0;
-                       default:
-                               return -1;
-                       }
-               }
-
-               return -1;
-       } else if ((protocol == ETH_P_PPP_DISC) ||
-                  (protocol == ETH_P_PPP_SES)) {
-               /*---------------------------------------------------*/
-               /*                Handle PPPoE frame                 */
-               /*---------------------------------------------------*/
-               struct pppoe_hdr *ph = (struct pppoe_hdr *)(skb->data + ETH_HLEN);
-               __be16 *pMagic;
-
-               switch (method) {
-               case NAT25_CHECK:
-                       if (ph->sid == 0)
-                               return 0;
-                       return 1;
-               case NAT25_INSERT:
-                       if (ph->sid == 0) {     /*  Discovery phase according to tag */
-                               if (ph->code == PADI_CODE || ph->code == PADR_CODE) {
-                                       if (priv->ethBrExtInfo.addPPPoETag) {
-                                               struct pppoe_tag *tag, *pOldTag;
-                                               unsigned char tag_buf[40];
-                                               int old_tag_len = 0;
-
-                                               tag = (struct pppoe_tag *)tag_buf;
-                                               pOldTag = (struct pppoe_tag *)__nat25_find_pppoe_tag(ph, ntohs(PTT_RELAY_SID));
-                                               if (pOldTag) { /*  if SID existed, copy old value and delete it */
-                                                       old_tag_len = ntohs(pOldTag->tag_len);
-                                                       if (old_tag_len+TAG_HDR_LEN+MAGIC_CODE_LEN+RTL_RELAY_TAG_LEN > sizeof(tag_buf)) {
-                                                               DEBUG_ERR("SID tag length too long!\n");
-                                                               return -1;
-                                                       }
-
-                                                       memcpy(tag->tag_data+MAGIC_CODE_LEN+RTL_RELAY_TAG_LEN,
-                                                               pOldTag->tag_data, old_tag_len);
-
-                                                       if (skb_pull_and_merge(skb, (unsigned char *)pOldTag, TAG_HDR_LEN+old_tag_len) < 0) {
-                                                               DEBUG_ERR("call skb_pull_and_merge() failed in PADI/R packet!\n");
-                                                               return -1;
-                                                       }
-                                                       ph->length = htons(ntohs(ph->length)-TAG_HDR_LEN-old_tag_len);
-                                               }
-
-                                               tag->tag_type = PTT_RELAY_SID;
-                                               tag->tag_len = htons(MAGIC_CODE_LEN+RTL_RELAY_TAG_LEN+old_tag_len);
-
-                                               /*  insert the magic_code+client mac in relay tag */
-                                               pMagic = (__be16 *)tag->tag_data;
-                                               *pMagic = htons(MAGIC_CODE);
-                                               memcpy(tag->tag_data+MAGIC_CODE_LEN, skb->data+ETH_ALEN, ETH_ALEN);
-
-                                               /* Add relay tag */
-                                               if (__nat25_add_pppoe_tag(skb, tag) < 0)
-                                                       return -1;
-
-                                               DEBUG_INFO("NAT25: Insert PPPoE, forward %s packet\n",
-                                                                               (ph->code == PADI_CODE ? "PADI" : "PADR"));
-                                       } else { /*  not add relay tag */
-                                               if (priv->pppoe_connection_in_progress &&
-                                                               memcmp(skb->data+ETH_ALEN, priv->pppoe_addr, ETH_ALEN))  {
-                                                       DEBUG_ERR("Discard PPPoE packet due to another PPPoE connection is in progress!\n");
-                                                       return -2;
-                                               }
-
-                                               if (priv->pppoe_connection_in_progress == 0)
-                                                       memcpy(priv->pppoe_addr, skb->data+ETH_ALEN, ETH_ALEN);
-
-                                               priv->pppoe_connection_in_progress = WAIT_TIME_PPPOE;
-                                       }
-                               } else {
-                                       return -1;
-                               }
-                       } else {        /*  session phase */
-                               DEBUG_INFO("NAT25: Insert PPPoE, insert session packet to %s\n", skb->dev->name);
-
-                               __nat25_generate_pppoe_network_addr(networkAddr, skb->data, &(ph->sid));
-
-                               __nat25_db_network_insert(priv, skb->data+ETH_ALEN, networkAddr);
-
-
-                               if (!priv->ethBrExtInfo.addPPPoETag &&
-                                   priv->pppoe_connection_in_progress &&
-                                   !memcmp(skb->data+ETH_ALEN, priv->pppoe_addr, ETH_ALEN))
-                                       priv->pppoe_connection_in_progress = 0;
-                       }
-                       return 0;
-               case NAT25_LOOKUP:
-                       if (ph->code == PADO_CODE || ph->code == PADS_CODE) {
-                               if (priv->ethBrExtInfo.addPPPoETag) {
-                                       struct pppoe_tag *tag;
-                                       unsigned char *ptr;
-                                       unsigned short tagType, tagLen;
-                                       int offset = 0;
-
-                                       ptr = __nat25_find_pppoe_tag(ph, ntohs(PTT_RELAY_SID));
-                                       if (ptr == NULL) {
-                                               DEBUG_ERR("Fail to find PTT_RELAY_SID in FADO!\n");
-                                               return -1;
-                                       }
-
-                                       tag = (struct pppoe_tag *)ptr;
-                                       tagType = (unsigned short)((ptr[0] << 8) + ptr[1]);
-                                       tagLen = (unsigned short)((ptr[2] << 8) + ptr[3]);
-
-                                       if ((tagType != ntohs(PTT_RELAY_SID)) || (tagLen < (MAGIC_CODE_LEN+RTL_RELAY_TAG_LEN))) {
-                                               DEBUG_ERR("Invalid PTT_RELAY_SID tag length [%d]!\n", tagLen);
-                                               return -1;
-                                       }
-
-                                       pMagic = (__be16 *)tag->tag_data;
-                                       if (ntohs(*pMagic) != MAGIC_CODE) {
-                                               DEBUG_ERR("Can't find MAGIC_CODE in %s packet!\n",
-                                                       (ph->code == PADO_CODE ? "PADO" : "PADS"));
-                                               return -1;
-                                       }
-
-                                       memcpy(skb->data, tag->tag_data+MAGIC_CODE_LEN, ETH_ALEN);
-
-                                       if (tagLen > MAGIC_CODE_LEN+RTL_RELAY_TAG_LEN)
-                                               offset = TAG_HDR_LEN;
-
-                                       if (skb_pull_and_merge(skb, ptr+offset, TAG_HDR_LEN+MAGIC_CODE_LEN+RTL_RELAY_TAG_LEN-offset) < 0) {
-                                               DEBUG_ERR("call skb_pull_and_merge() failed in PADO packet!\n");
-                                               return -1;
-                                       }
-                                       ph->length = htons(ntohs(ph->length)-(TAG_HDR_LEN+MAGIC_CODE_LEN+RTL_RELAY_TAG_LEN-offset));
-                                       if (offset > 0)
-                                               tag->tag_len = htons(tagLen-MAGIC_CODE_LEN-RTL_RELAY_TAG_LEN);
-
-                                       DEBUG_INFO("NAT25: Lookup PPPoE, forward %s Packet from %s\n",
-                                               (ph->code == PADO_CODE ? "PADO" : "PADS"),      skb->dev->name);
-                               } else { /*  not add relay tag */
-                                       if (!priv->pppoe_connection_in_progress) {
-                                               DEBUG_ERR("Discard PPPoE packet due to no connection in progress!\n");
-                                               return -1;
-                                       }
-                                       memcpy(skb->data, priv->pppoe_addr, ETH_ALEN);
-                                       priv->pppoe_connection_in_progress = WAIT_TIME_PPPOE;
-                               }
-                       } else {
-                               if (ph->sid != 0) {
-                                       DEBUG_INFO("NAT25: Lookup PPPoE, lookup session packet from %s\n", skb->dev->name);
-                                       __nat25_generate_pppoe_network_addr(networkAddr, skb->data+ETH_ALEN, &(ph->sid));
-                                       __nat25_db_network_lookup_and_replace(priv, skb, networkAddr);
-                               } else {
-                                       return -1;
-                               }
-                       }
-                       return 0;
-               default:
-                       return -1;
-               }
-       } else if (protocol == 0x888e) {
-               /*---------------------------------------------------*/
-               /*                 Handle EAP frame                  */
-               /*---------------------------------------------------*/
-               switch (method) {
-               case NAT25_CHECK:
-                       return -1;
-               case NAT25_INSERT:
-                       return 0;
-               case NAT25_LOOKUP:
-                       return 0;
-               default:
-                       return -1;
-               }
-       } else if ((protocol == 0xe2ae) || (protocol == 0xe2af)) {
-               /*---------------------------------------------------*/
-               /*         Handle C-Media proprietary frame          */
-               /*---------------------------------------------------*/
-               switch (method) {
-               case NAT25_CHECK:
-                       return -1;
-               case NAT25_INSERT:
-                       return 0;
-               case NAT25_LOOKUP:
-                       return 0;
-               default:
-                       return -1;
-               }
-       } else if (protocol == ETH_P_IPV6) {
-               /*------------------------------------------------*/
-               /*         Handle IPV6 frame                      */
-               /*------------------------------------------------*/
-               struct ipv6hdr *iph = (struct ipv6hdr *)(skb->data + ETH_HLEN);
-
-               if (sizeof(*iph) >= (skb->len - ETH_HLEN)) {
-                       DEBUG_WARN("NAT25: malformed IPv6 packet !\n");
-                       return -1;
-               }
-
-               switch (method) {
-               case NAT25_CHECK:
-                       if (skb->data[0] & 1)
-                               return 0;
-                       return -1;
-               case NAT25_INSERT:
-                       DEBUG_INFO("NAT25: Insert IP, SA =%4x:%4x:%4x:%4x:%4x:%4x:%4x:%4x,"
-                                                       " DA =%4x:%4x:%4x:%4x:%4x:%4x:%4x:%4x\n",
-                               iph->saddr.s6_addr16[0], iph->saddr.s6_addr16[1], iph->saddr.s6_addr16[2], iph->saddr.s6_addr16[3],
-                               iph->saddr.s6_addr16[4], iph->saddr.s6_addr16[5], iph->saddr.s6_addr16[6], iph->saddr.s6_addr16[7],
-                               iph->daddr.s6_addr16[0], iph->daddr.s6_addr16[1], iph->daddr.s6_addr16[2], iph->daddr.s6_addr16[3],
-                               iph->daddr.s6_addr16[4], iph->daddr.s6_addr16[5], iph->daddr.s6_addr16[6], iph->daddr.s6_addr16[7]);
-
-                       if (memcmp(&iph->saddr, "\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0", 16)) {
-                               __nat25_generate_ipv6_network_addr(networkAddr, (__be32 *)&iph->saddr);
-                               __nat25_db_network_insert(priv, skb->data+ETH_ALEN, networkAddr);
-
-                               if (iph->nexthdr == IPPROTO_ICMPV6 &&
-                                               skb->len > (ETH_HLEN +  sizeof(*iph) + 4)) {
-                                       if (update_nd_link_layer_addr(skb->data + ETH_HLEN + sizeof(*iph),
-                                                                     skb->len - ETH_HLEN - sizeof(*iph), GET_MY_HWADDR(priv))) {
-                                               struct icmp6hdr  *hdr = (struct icmp6hdr *)(skb->data + ETH_HLEN + sizeof(*iph));
-                                               hdr->icmp6_cksum = 0;
-                                               hdr->icmp6_cksum = csum_ipv6_magic(&iph->saddr, &iph->daddr,
-                                                                               be16_to_cpu(iph->payload_len),
-                                                                               IPPROTO_ICMPV6,
-                                                                               csum_partial((__u8 *)hdr,
-                                                                               be16_to_cpu(iph->payload_len), 0));
-                                       }
-                               }
-                       }
-                       return 0;
-               case NAT25_LOOKUP:
-                       DEBUG_INFO("NAT25: Lookup IP, SA =%4x:%4x:%4x:%4x:%4x:%4x:%4x:%4x, DA =%4x:%4x:%4x:%4x:%4x:%4x:%4x:%4x\n",
-                                  iph->saddr.s6_addr16[0], iph->saddr.s6_addr16[1], iph->saddr.s6_addr16[2], iph->saddr.s6_addr16[3],
-                                  iph->saddr.s6_addr16[4], iph->saddr.s6_addr16[5], iph->saddr.s6_addr16[6], iph->saddr.s6_addr16[7],
-                                  iph->daddr.s6_addr16[0], iph->daddr.s6_addr16[1], iph->daddr.s6_addr16[2], iph->daddr.s6_addr16[3],
-                                  iph->daddr.s6_addr16[4], iph->daddr.s6_addr16[5], iph->daddr.s6_addr16[6], iph->daddr.s6_addr16[7]);
-                       __nat25_generate_ipv6_network_addr(networkAddr, (__be32 *)&iph->daddr);
-                       __nat25_db_network_lookup_and_replace(priv, skb, networkAddr);
-                       return 0;
-               default:
-                       return -1;
-               }
-       }
-       return -1;
-}
-
 #define SERVER_PORT                    67
 #define CLIENT_PORT                    68
 #define DHCP_MAGIC                     0x63825363
index 292ded7c2bb387cc731784918eb73f74f8a56150..8036c3873fda4563e052552e1091e7c70ca2f926 100644 (file)
@@ -34,7 +34,6 @@ void dhcp_flag_bcast(struct adapter *priv, struct sk_buff *skb);
 void *scdb_findEntry(struct adapter *priv, unsigned char *macAddr,
                     unsigned char *ipAddr);
 void nat25_db_expire(struct adapter *priv);
-int nat25_db_handle(struct adapter *priv, struct sk_buff *skb, int method);
 
 int rtw_resume_process(struct adapter *padapter);