]> rtime.felk.cvut.cz Git - l4.git/blobdiff - l4/pkg/linux-26-headers/include/linux/if_pppox.h
update
[l4.git] / l4 / pkg / linux-26-headers / include / linux / if_pppox.h
index 6fb7f1788570dc0a3cd428e5b8518672261819c4..195e4d6115fc8685c90c0ace13d703427d0dbbf8 100644 (file)
 #define __LINUX_IF_PPPOX_H
 
 
-#include <asm/types.h>
+#include <linux/types.h>
 #include <asm/byteorder.h>
 
-#ifdef  __KERNEL__
+#include <linux/socket.h>
 #include <linux/if_ether.h>
-#include <linux/if.h>
-#include <linux/netdevice.h>
-#include <linux/ppp_channel.h>
-#endif /* __KERNEL__ */
 #include <linux/if_pppol2tp.h>
 
 /* For user-space programs to pick up these definitions
  * PPPoE addressing definition 
  */ 
 typedef __be16 sid_t;
-struct pppoe_addr
-       sid_t           sid;                    /* Session identifier */ 
-       unsigned char   remote[ETH_ALEN];       /* Remote address */ 
-       char            dev[IFNAMSIZ];          /* Local device to use */ 
+struct pppoe_addr {
+       sid_t         sid;                    /* Session identifier */
+       unsigned char remote[ETH_ALEN];       /* Remote address */
+       char          dev[IFNAMSIZ];          /* Local device to use */
 }; 
  
 /************************************************************************ 
- * Protocols supported by AF_PPPOX 
- */ 
+ * PPTP addressing definition
+ */
+struct pptp_addr {
+       __be16          call_id;
+       struct in_addr  sin_addr;
+};
+
+/************************************************************************
+ * Protocols supported by AF_PPPOX
+ */
 #define PX_PROTO_OE    0 /* Currently just PPPoE */
 #define PX_PROTO_OL2TP 1 /* Now L2TP also */
-#define PX_MAX_PROTO   2
+#define PX_PROTO_PPTP  2
+#define PX_MAX_PROTO   3
 
-struct sockaddr_pppox { 
-       sa_family_t     sa_family;            /* address family, AF_PPPOX */ 
-       unsigned int    sa_protocol;          /* protocol identifier */ 
-       union{ 
-               struct pppoe_addr       pppoe; 
-       }sa_addr; 
-}__attribute__ ((packed)); 
+struct sockaddr_pppox {
+       __kernel_sa_family_t sa_family;       /* address family, AF_PPPOX */
+       unsigned int    sa_protocol;          /* protocol identifier */
+       union {
+               struct pppoe_addr  pppoe;
+               struct pptp_addr   pptp;
+       } 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
@@ -67,10 +73,31 @@ struct sockaddr_pppox {
  * type instead.
  */
 struct sockaddr_pppol2tp {
-       sa_family_t     sa_family;      /* address family, AF_PPPOX */
+       __kernel_sa_family_t sa_family; /* address family, AF_PPPOX */
        unsigned int    sa_protocol;    /* protocol identifier */
        struct pppol2tp_addr pppol2tp;
-}__attribute__ ((packed));
+} __attribute__((packed));
+
+struct sockaddr_pppol2tpin6 {
+       __kernel_sa_family_t sa_family; /* address family, AF_PPPOX */
+       unsigned int    sa_protocol;    /* protocol identifier */
+       struct pppol2tpin6_addr pppol2tp;
+} __attribute__((packed));
+
+/* The L2TPv3 protocol changes tunnel and session ids from 16 to 32
+ * bits. So we need a different sockaddr structure.
+ */
+struct sockaddr_pppol2tpv3 {
+       __kernel_sa_family_t sa_family; /* address family, AF_PPPOX */
+       unsigned int    sa_protocol;    /* protocol identifier */
+       struct pppol2tpv3_addr pppol2tp;
+} __attribute__((packed));
+
+struct sockaddr_pppol2tpv3in6 {
+       __kernel_sa_family_t sa_family; /* address family, AF_PPPOX */
+       unsigned int    sa_protocol;    /* protocol identifier */
+       struct pppol2tpv3in6_addr pppol2tp;
+} __attribute__((packed));
 
 /*********************************************************************
  *
@@ -92,19 +119,19 @@ struct pppoe_tag {
        __be16 tag_type;
        __be16 tag_len;
        char tag_data[0];
-} __attribute ((packed));
+} __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)
@@ -120,78 +147,10 @@ struct pppoe_hdr {
        __be16 sid;
        __be16 length;
        struct pppoe_tag tag[0];
-} __attribute__ ((packed));
+} __attribute__((packed));
 
 /* Length of entire PPPoE + PPP header */
 #define PPPOE_SES_HLEN 8
 
-#ifdef __KERNEL__
-#include <linux/skbuff.h>
-
-static inline struct pppoe_hdr *pppoe_hdr(const struct sk_buff *skb)
-{
-       return (struct pppoe_hdr *)skb_network_header(skb);
-}
-
-struct pppoe_opt {
-       struct net_device      *dev;      /* device associated with socket*/
-       int                     ifindex;  /* ifindex of device associated with socket */
-       struct pppoe_addr       pa;       /* what this socket is bound to*/
-       struct sockaddr_pppox   relay;    /* what socket data will be
-                                            relayed to (PPPoE relaying) */
-};
-
-#include <net/sock.h>
-
-struct pppox_sock {
-       /* struct sock must be the first member of pppox_sock */
-       struct sock             sk;
-       struct ppp_channel      chan;
-       struct pppox_sock       *next;    /* for hash table */
-       union {
-               struct pppoe_opt pppoe;
-       } proto;
-       __be16                  num;
-};
-#define pppoe_dev      proto.pppoe.dev
-#define pppoe_ifindex  proto.pppoe.ifindex
-#define pppoe_pa       proto.pppoe.pa
-#define pppoe_relay    proto.pppoe.relay
-
-static inline struct pppox_sock *pppox_sk(struct sock *sk)
-{
-       return (struct pppox_sock *)sk;
-}
-
-static inline struct sock *sk_pppox(struct pppox_sock *po)
-{
-       return (struct sock *)po;
-}
-
-struct module;
-
-struct pppox_proto {
-       int             (*create)(struct net *net, struct socket *sock);
-       int             (*ioctl)(struct socket *sock, unsigned int cmd,
-                                unsigned long arg);
-       struct module   *owner;
-};
-
-extern int register_pppox_proto(int proto_num, struct pppox_proto *pp);
-extern void unregister_pppox_proto(int proto_num);
-extern void pppox_unbind_sock(struct sock *sk);/* delete ppp-channel binding */
-extern int pppox_ioctl(struct socket *sock, unsigned int cmd, unsigned long arg);
-
-/* PPPoX socket states */
-enum {
-    PPPOX_NONE         = 0,  /* initial state */
-    PPPOX_CONNECTED    = 1,  /* connection established ==TCP_ESTABLISHED */
-    PPPOX_BOUND                = 2,  /* bound to ppp device */
-    PPPOX_RELAY                = 4,  /* forwarding is enabled */
-    PPPOX_ZOMBIE       = 8,  /* dead, but still bound to ppp device */
-    PPPOX_DEAD         = 16  /* dead, useless, please clean me up!*/
-};
-
-#endif /* __KERNEL__ */
 
-#endif /* !(__LINUX_IF_PPPOX_H) */
+#endif /* __LINUX_IF_PPPOX_H */