string: factorize skip_spaces and export it to be generally available
[safe/jmp/linux-2.6] / net / 802 / hippi.c
index 051e8af..cd3e8e9 100644 (file)
@@ -23,7 +23,6 @@
 #include <linux/module.h>
 #include <linux/types.h>
 #include <linux/kernel.h>
-#include <linux/sched.h>
 #include <linux/string.h>
 #include <linux/mm.h>
 #include <linux/socket.h>
 #include <net/arp.h>
 #include <net/sock.h>
 #include <asm/uaccess.h>
-#include <asm/checksum.h>
 #include <asm/system.h>
 
 /*
- * Create the HIPPI MAC header for an arbitrary protocol layer 
+ * Create the HIPPI MAC header for an arbitrary protocol layer
  *
  * saddr=NULL  means use device source address
  * daddr=NULL  means leave destination address (eg unresolved arp)
  */
 
 static int hippi_header(struct sk_buff *skb, struct net_device *dev,
-                       unsigned short type, void *daddr, void *saddr,
-                       unsigned len)
+                       unsigned short type,
+                       const void *daddr, const void *saddr, unsigned len)
 {
        struct hippi_hdr *hip = (struct hippi_hdr *)skb_push(skb, HIPPI_HLEN);
+       struct hippi_cb *hcb = (struct hippi_cb *) skb->cb;
 
        if (!len){
                len = skb->len - HIPPI_HLEN;
@@ -61,7 +60,7 @@ static int hippi_header(struct sk_buff *skb, struct net_device *dev,
         * Due to the stupidity of the little endian byte-order we
         * have to set the fp field this way.
         */
-       hip->fp.fixed           = __constant_htonl(0x04800018);
+       hip->fp.fixed           = htonl(0x04800018);
        hip->fp.d2_size         = htonl(len + 8);
        hip->le.fc              = 0;
        hip->le.double_wide     = 0;    /* only HIPPI 800 for the time being */
@@ -84,9 +83,10 @@ static int hippi_header(struct sk_buff *skb, struct net_device *dev,
        if (daddr)
        {
                memcpy(hip->le.dest_switch_addr, daddr + 3, 3);
-               memcpy(&skb->private.ifield, daddr + 2, 4);
+               memcpy(&hcb->ifield, daddr + 2, 4);
                return HIPPI_HLEN;
        }
+       hcb->ifield = 0;
        return -((int)HIPPI_HLEN);
 }
 
@@ -103,8 +103,8 @@ static int hippi_rebuild_header(struct sk_buff *skb)
        /*
         * Only IP is currently supported
         */
-        
-       if(hip->snap.ethertype != __constant_htons(ETH_P_IP)) 
+
+       if(hip->snap.ethertype != htons(ETH_P_IP))
        {
                printk(KERN_DEBUG "%s: unable to resolve type %X addresses.\n",skb->dev->name,ntohs(hip->snap.ethertype));
                return 0;
@@ -121,19 +121,19 @@ static int hippi_rebuild_header(struct sk_buff *skb)
 /*
  *     Determine the packet's protocol ID.
  */
-unsigned short hippi_type_trans(struct sk_buff *skb, struct net_device *dev)
+
+__be16 hippi_type_trans(struct sk_buff *skb, struct net_device *dev)
 {
        struct hippi_hdr *hip;
-       
-       hip = (struct hippi_hdr *) skb->data;
 
        /*
         * This is actually wrong ... question is if we really should
         * set the raw address here.
         */
-        skb->mac.raw = skb->data;
-        skb_pull(skb, HIPPI_HLEN);
+       skb->dev = dev;
+       skb_reset_mac_header(skb);
+       hip = (struct hippi_hdr *)skb_mac_header(skb);
+       skb_pull(skb, HIPPI_HLEN);
 
        /*
         * No fancy promisc stuff here now.
@@ -144,7 +144,7 @@ unsigned short hippi_type_trans(struct sk_buff *skb, struct net_device *dev)
 
 EXPORT_SYMBOL(hippi_type_trans);
 
-static int hippi_change_mtu(struct net_device *dev, int new_mtu)
+int hippi_change_mtu(struct net_device *dev, int new_mtu)
 {
        /*
         * HIPPI's got these nice large MTUs.
@@ -154,12 +154,13 @@ static int hippi_change_mtu(struct net_device *dev, int new_mtu)
        dev->mtu = new_mtu;
        return(0);
 }
+EXPORT_SYMBOL(hippi_change_mtu);
 
 /*
  * For HIPPI we will actually use the lower 4 bytes of the hardware
  * address as the I-FIELD rather than the actual hardware address.
  */
-static int hippi_mac_addr(struct net_device *dev, void *p)
+int hippi_mac_addr(struct net_device *dev, void *p)
 {
        struct sockaddr *addr = p;
        if (netif_running(dev))
@@ -167,32 +168,32 @@ static int hippi_mac_addr(struct net_device *dev, void *p)
        memcpy(dev->dev_addr, addr->sa_data, dev->addr_len);
        return 0;
 }
+EXPORT_SYMBOL(hippi_mac_addr);
 
-static int hippi_neigh_setup_dev(struct net_device *dev, struct neigh_parms *p)
+int hippi_neigh_setup_dev(struct net_device *dev, struct neigh_parms *p)
 {
        /* Never send broadcast/multicast ARP messages */
        p->mcast_probes = 0;
+
        /* In IPv6 unicast probes are valid even on NBMA,
        * because they are encapsulated in normal IPv6 protocol.
-       * Should be a generic flag. 
+       * Should be a generic flag.
        */
        if (p->tbl->family != AF_INET6)
                p->ucast_probes = 0;
        return 0;
 }
+EXPORT_SYMBOL(hippi_neigh_setup_dev);
+
+static const struct header_ops hippi_header_ops = {
+       .create         = hippi_header,
+       .rebuild        = hippi_rebuild_header,
+};
+
 
 static void hippi_setup(struct net_device *dev)
 {
-       dev->set_multicast_list         = NULL;
-       dev->change_mtu                 = hippi_change_mtu;
-       dev->hard_header                = hippi_header;
-       dev->rebuild_header             = hippi_rebuild_header;
-       dev->set_mac_address            = hippi_mac_addr;
-       dev->hard_header_parse          = NULL;
-       dev->hard_header_cache          = NULL;
-       dev->header_cache_update        = NULL;
-       dev->neigh_setup                = hippi_neigh_setup_dev; 
+       dev->header_ops                 = &hippi_header_ops;
 
        /*
         * We don't support HIPPI `ARP' for the time being, and probably
@@ -209,9 +210,9 @@ static void hippi_setup(struct net_device *dev)
 
        /*
         * HIPPI doesn't support broadcast+multicast and we only use
-        * static ARP tables. ARP is disabled by hippi_neigh_setup_dev. 
+        * static ARP tables. ARP is disabled by hippi_neigh_setup_dev.
         */
-       dev->flags = 0; 
+       dev->flags = 0;
 }
 
 /**