summaryrefslogtreecommitdiff
path: root/include/linux/if_pppox.h
diff options
context:
space:
mode:
Diffstat (limited to 'include/linux/if_pppox.h')
-rw-r--r--include/linux/if_pppox.h24
1 files changed, 23 insertions, 1 deletions
diff --git a/include/linux/if_pppox.h b/include/linux/if_pppox.h
index 27741e05446f..03749f41131f 100644
--- a/include/linux/if_pppox.h
+++ b/include/linux/if_pppox.h
@@ -27,6 +27,8 @@
#include <linux/ppp_channel.h>
#endif /* __KERNEL__ */
#include <linux/if_pppol2tp.h>
+#include <linux/if_pppolac.h>
+#include <linux/if_pppopns.h>
/* For user-space programs to pick up these definitions
* which they wouldn't get otherwise without defining __KERNEL__
@@ -51,7 +53,9 @@ struct pppoe_addr{
*/
#define PX_PROTO_OE 0 /* Currently just PPPoE */
#define PX_PROTO_OL2TP 1 /* Now L2TP also */
-#define PX_MAX_PROTO 2
+#define PX_PROTO_OLAC 2
+#define PX_PROTO_OPNS 3
+#define PX_MAX_PROTO 4
struct sockaddr_pppox {
sa_family_t sa_family; /* address family, AF_PPPOX */
@@ -150,6 +154,22 @@ struct pppoe_opt {
relayed to (PPPoE relaying) */
};
+struct pppolac_opt {
+ __u32 local;
+ __u32 remote;
+ __u16 sequence;
+ __u8 sequencing;
+ int (*backlog_rcv)(struct sock *sk_udp, struct sk_buff *skb);
+};
+
+struct pppopns_opt {
+ __u16 local;
+ __u16 remote;
+ __u32 sequence;
+ void (*data_ready)(struct sock *sk_raw, int length);
+ int (*backlog_rcv)(struct sock *sk_raw, struct sk_buff *skb);
+};
+
#include <net/sock.h>
struct pppox_sock {
@@ -159,6 +179,8 @@ struct pppox_sock {
struct pppox_sock *next; /* for hash table */
union {
struct pppoe_opt pppoe;
+ struct pppolac_opt lac;
+ struct pppopns_opt pns;
} proto;
__be16 num;
};