nfsd4: rename callback struct to cb_conn
[safe/jmp/linux-2.6] / include / linux / if_pppox.h
index 29d6579..90b5fae 100644 (file)
 #define __LINUX_IF_PPPOX_H
 
 
-#include <asm/types.h>
+#include <linux/types.h>
 #include <asm/byteorder.h>
 
 #ifdef  __KERNEL__
 #include <linux/if_ether.h>
 #include <linux/if.h>
 #include <linux/netdevice.h>
-#include <asm/semaphore.h>
 #include <linux/ppp_channel.h>
 #endif /* __KERNEL__ */
+#include <linux/if_pppol2tp.h>
 
 /* For user-space programs to pick up these definitions
  * which they wouldn't get otherwise without defining __KERNEL__
@@ -39,7 +39,7 @@
 /************************************************************************ 
  * PPPoE addressing definition 
  */ 
-typedef __u16 sid_t; 
+typedef __be16 sid_t;
 struct pppoe_addr{ 
        sid_t           sid;                    /* Session identifier */ 
        unsigned char   remote[ETH_ALEN];       /* Remote address */ 
@@ -50,8 +50,9 @@ struct pppoe_addr{
  * Protocols supported by AF_PPPOX 
  */ 
 #define PX_PROTO_OE    0 /* Currently just PPPoE */
-#define PX_MAX_PROTO   1       
+#define PX_PROTO_OL2TP 1 /* Now L2TP also */
+#define PX_MAX_PROTO   2
+
 struct sockaddr_pppox { 
        sa_family_t     sa_family;            /* address family, AF_PPPOX */ 
        unsigned int    sa_protocol;          /* protocol identifier */ 
@@ -60,6 +61,16 @@ struct sockaddr_pppox {
        }sa_addr; 
 }__attribute__ ((packed)); 
 
+/* The use of the above union isn't viable because the size of this
+ * struct must stay fixed over time -- applications use sizeof(struct
+ * sockaddr_pppox) to fill it. We use a protocol specific sockaddr
+ * type instead.
+ */
+struct sockaddr_pppol2tp {
+       sa_family_t     sa_family;      /* address family, AF_PPPOX */
+       unsigned int    sa_protocol;    /* protocol identifier */
+       struct pppol2tp_addr pppol2tp;
+}__attribute__ ((packed));
 
 /*********************************************************************
  *
@@ -78,22 +89,22 @@ struct sockaddr_pppox {
 #define PADS_CODE      0x65
 #define PADT_CODE      0xa7
 struct pppoe_tag {
-       __u16 tag_type;
-       __u16 tag_len;
+       __be16 tag_type;
+       __be16 tag_len;
        char tag_data[0];
 } __attribute ((packed));
 
 /* Tag identifiers */
-#define PTT_EOL                __constant_htons(0x0000)
-#define PTT_SRV_NAME   __constant_htons(0x0101)
-#define PTT_AC_NAME    __constant_htons(0x0102)
-#define PTT_HOST_UNIQ  __constant_htons(0x0103)
-#define PTT_AC_COOKIE  __constant_htons(0x0104)
-#define PTT_VENDOR     __constant_htons(0x0105)
-#define PTT_RELAY_SID  __constant_htons(0x0110)
-#define PTT_SRV_ERR     __constant_htons(0x0201)
-#define PTT_SYS_ERR    __constant_htons(0x0202)
-#define PTT_GEN_ERR    __constant_htons(0x0203)
+#define PTT_EOL                __cpu_to_be16(0x0000)
+#define PTT_SRV_NAME   __cpu_to_be16(0x0101)
+#define PTT_AC_NAME    __cpu_to_be16(0x0102)
+#define PTT_HOST_UNIQ  __cpu_to_be16(0x0103)
+#define PTT_AC_COOKIE  __cpu_to_be16(0x0104)
+#define PTT_VENDOR     __cpu_to_be16(0x0105)
+#define PTT_RELAY_SID  __cpu_to_be16(0x0110)
+#define PTT_SRV_ERR     __cpu_to_be16(0x0201)
+#define PTT_SYS_ERR    __cpu_to_be16(0x0202)
+#define PTT_GEN_ERR    __cpu_to_be16(0x0203)
 
 struct pppoe_hdr {
 #if defined(__LITTLE_ENDIAN_BITFIELD)
@@ -106,11 +117,14 @@ struct pppoe_hdr {
 #error "Please fix <asm/byteorder.h>"
 #endif
        __u8 code;
-       __u16 sid;
-       __u16 length;
+       __be16 sid;
+       __be16 length;
        struct pppoe_tag tag[0];
 } __attribute__ ((packed));
 
+/* Length of entire PPPoE + PPP header */
+#define PPPOE_SES_HLEN 8
+
 #ifdef __KERNEL__
 #include <linux/skbuff.h>
 
@@ -137,7 +151,7 @@ struct pppox_sock {
        union {
                struct pppoe_opt pppoe;
        } proto;
-       unsigned short          num;
+       __be16                  num;
 };
 #define pppoe_dev      proto.pppoe.dev
 #define pppoe_ifindex  proto.pppoe.ifindex
@@ -157,7 +171,7 @@ static inline struct sock *sk_pppox(struct pppox_sock *po)
 struct module;
 
 struct pppox_proto {
-       int             (*create)(struct socket *sock);
+       int             (*create)(struct net *net, struct socket *sock);
        int             (*ioctl)(struct socket *sock, unsigned int cmd,
                                 unsigned long arg);
        struct module   *owner;