patch-2.1.20 linux/net/802/p8022.c

Next file: linux/net/802/p8022tr.c
Previous file: linux/net/802/llc_macinit.c
Back to the patch index
Back to the overall index

diff -u --recursive --new-file v2.1.19/linux/net/802/p8022.c linux/net/802/p8022.c
@@ -1,3 +1,21 @@
+/*
+ *	NET3:	Support for 802.2 demultiplexing off ethernet (Token ring
+ *		is kept seperate see p8022tr.c)
+ *		This program is free software; you can redistribute it and/or
+ *		modify it under the terms of the GNU General Public License
+ *		as published by the Free Software Foundation; either version
+ *		2 of the License, or (at your option) any later version.
+ *
+ *		Demultiplex 802.2 encoded protocols. We match the entry by the
+ *		SSAP/DSAP pair and then deliver to the registered datalink that
+ *		matches. The control byte is ignored and handling of such items
+ *		is up to the routine passed the frame.
+ *
+ *		Unlike the 802.3 datalink we have a list of 802.2 entries as there
+ *		are multiple protocols to demux. The list is currently short (3 or
+ *		4 entries at most). The current demux assumes this.
+ */
+
 #include <linux/module.h>
 #include <linux/netdevice.h>
 #include <linux/skbuff.h>
@@ -12,11 +30,11 @@
  *	We don't handle the loopback SAP stuff, the extended
  *	802.2 command set, multicast SAP identifiers and non UI
  *	frames. We have the absolute minimum needed for IPX,
- *	IP and Appletalk phase 2.
+ *	IP and Appletalk phase 2. See the llc_* routines for
+ *	support libraries if your protocol needs these.
  */
 
-static struct datalink_proto *
-find_8022_client(unsigned char type)
+static struct datalink_proto *find_8022_client(unsigned char type)
 {
 	struct datalink_proto	*proto;
 
@@ -28,13 +46,13 @@
 	return proto;
 }
 
-int
-p8022_rcv(struct sk_buff *skb, struct device *dev, struct packet_type *pt)
+int p8022_rcv(struct sk_buff *skb, struct device *dev, struct packet_type *pt)
 {
 	struct datalink_proto	*proto;
 
 	proto = find_8022_client(*(skb->h.raw));
-	if (proto != NULL) {
+	if (proto != NULL) 
+	{
 		skb->h.raw += 3;
 		skb_pull(skb,3);
 		return proto->rcvfunc(skb, dev, pt);
@@ -45,8 +63,7 @@
 	return 0;
 }
 
-static void
-p8022_datalink_header(struct datalink_proto *dl,
+static void p8022_datalink_header(struct datalink_proto *dl,
 		struct sk_buff *skb, unsigned char *dest_node)
 {
 	struct device	*dev = skb->dev;
@@ -77,8 +94,7 @@
 	dev_add_pack(&p8022_packet_type);
 }
 
-struct datalink_proto *
-register_8022_client(unsigned char type, int (*rcvfunc)(struct sk_buff *, struct device *, struct packet_type *))
+struct datalink_proto *register_8022_client(unsigned char type, int (*rcvfunc)(struct sk_buff *, struct device *, struct packet_type *))
 {
 	struct datalink_proto	*proto;
 

FUNET's LINUX-ADM group, linux-adm@nic.funet.fi
TCL-scripts by Sam Shen, slshen@lbl.gov