cregit-Linux how code gets into the kernel

Release 4.14 net/802/p8022.c

Directory: net/802
/*
 *      NET3:   Support for 802.2 demultiplexing off Ethernet
 *              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>
#include <linux/slab.h>
#include <net/datalink.h>
#include <linux/mm.h>
#include <linux/in.h>
#include <linux/init.h>
#include <net/llc.h>
#include <net/p8022.h>


static int p8022_request(struct datalink_proto *dl, struct sk_buff *skb, unsigned char *dest) { llc_build_and_send_ui_pkt(dl->sap, skb, dest, dl->sap->laddr.lsap); return 0; }

Contributors

PersonTokensPropCommitsCommitProp
Arnaldo Carvalho de Melo2455.81%350.00%
Linus Torvalds (pre-git)1944.19%350.00%
Total43100.00%6100.00%


struct datalink_proto *register_8022_client(unsigned char type, int (*func)(struct sk_buff *skb, struct net_device *dev, struct packet_type *pt, struct net_device *orig_dev)) { struct datalink_proto *proto; proto = kmalloc(sizeof(*proto), GFP_ATOMIC); if (proto) { proto->type[0] = type; proto->header_length = 3; proto->request = p8022_request; proto->sap = llc_sap_open(type, func); if (!proto->sap) { kfree(proto); proto = NULL; } } return proto; }

Contributors

PersonTokensPropCommitsCommitProp
Linus Torvalds (pre-git)7262.61%342.86%
Arnaldo Carvalho de Melo3833.04%342.86%
David S. Miller54.35%114.29%
Total115100.00%7100.00%


void unregister_8022_client(struct datalink_proto *proto) { llc_sap_put(proto->sap); kfree(proto); }

Contributors

PersonTokensPropCommitsCommitProp
Linus Torvalds (pre-git)1463.64%133.33%
Arnaldo Carvalho de Melo836.36%266.67%
Total22100.00%3100.00%

EXPORT_SYMBOL(register_8022_client); EXPORT_SYMBOL(unregister_8022_client); MODULE_LICENSE("GPL");

Overall Contributors

PersonTokensPropCommitsCommitProp
Linus Torvalds (pre-git)12856.64%844.44%
Arnaldo Carvalho de Melo8939.38%738.89%
David S. Miller52.21%15.56%
Tejun Heo31.33%15.56%
Paul Gortmaker10.44%15.56%
Total226100.00%18100.00%
Directory: net/802
Information contained on this website is for historical information purposes only and does not indicate or represent copyright ownership.
Created with cregit.