/* Copyright 2011, Siemens AG *writtenbyAlexanderSmirnov<alex.bluesman.smirnov@gmail.com>
*/
/* Based on patches from Jon Smirl <jonsmirl@gmail.com> *Copyright(c)2011JonSmirl<jonsmirl@gmail.com> * *Thisprogramisfreesoftware;youcanredistributeitand/ormodify *itunderthetermsoftheGNUGeneralPublicLicenseversion2 *aspublishedbytheFreeSoftwareFoundation. * *Thisprogramisdistributedinthehopethatitwillbeuseful, *butWITHOUTANYWARRANTY;withouteventheimpliedwarrantyof *MERCHANTABILITYorFITNESSFORAPARTICULARPURPOSE.Seethe *GNUGeneralPublicLicenseformoredetails.
*/
/* Jon's code is based on 6lowpan implementation for Contiki which is: *Copyright(c)2008,SwedishInstituteofComputerScience. *Allrightsreserved. * *Redistributionanduseinsourceandbinaryforms,withorwithout *modification,arepermittedprovidedthatthefollowingconditions *aremet: *1.Redistributionsofsourcecodemustretaintheabovecopyright *notice,thislistofconditionsandthefollowingdisclaimer. *2.Redistributionsinbinaryformmustreproducetheabovecopyright *notice,thislistofconditionsandthefollowingdisclaimerinthe *documentationand/orothermaterialsprovidedwiththedistribution. *3.NeitherthenameoftheInstitutenorthenamesofitscontributors *maybeusedtoendorseorpromoteproductsderivedfromthissoftware *withoutspecificpriorwrittenpermission. * *THISSOFTWAREISPROVIDEDBYTHEINSTITUTEANDCONTRIBUTORS``ASIS''AND *ANYEXPRESSORIMPLIEDWARRANTIES,INCLUDING,BUTNOTLIMITEDTO,THE *IMPLIEDWARRANTIESOFMERCHANTABILITYANDFITNESSFORAPARTICULARPURPOSE *AREDISCLAIMED.INNOEVENTSHALLTHEINSTITUTEORCONTRIBUTORSBELIABLE *FORANYDIRECT,INDIRECT,INCIDENTAL,SPECIAL,EXEMPLARY,ORCONSEQUENTIAL *DAMAGES(INCLUDING,BUTNOTLIMITEDTO,PROCUREMENTOFSUBSTITUTEGOODS *ORSERVICES;LOSSOFUSE,DATA,ORPROFITS;ORBUSINESSINTERRUPTION) *HOWEVERCAUSEDANDONANYTHEORYOFLIABILITY,WHETHERINCONTRACT,STRICT *LIABILITY,ORTORT(INCLUDINGNEGLIGENCEOROTHERWISE)ARISINGINANYWAY *OUTOFTHEUSEOFTHISSOFTWARE,EVENIFADVISEDOFTHEPOSSIBILITYOF *SUCHDAMAGE.
*/
if (!tb[IFLA_LINK]) return -EINVAL; if (params->link_net && !net_eq(params->link_net, dev_net(ldev))) return -EINVAL; /* find and hold wpan device */
wdev = dev_get_by_index(dev_net(ldev), nla_get_u32(tb[IFLA_LINK])); if (!wdev) return -ENODEV; if (wdev->type != ARPHRD_IEEE802154) {
dev_put(wdev); return -EINVAL;
}
if (wdev->ieee802154_ptr->lowpan_dev) {
dev_put(wdev); return -EBUSY;
}
lowpan_802154_dev(ldev)->wdev = wdev; /* Set the lowpan hardware address to the wpan hardware address. */
__dev_addr_set(ldev, wdev->dev_addr, IEEE802154_ADDR_LEN); /* We need headroom for possible wpan_dev_hard_header call and tailroom *forencryption/fcshandling.Thelowpaninterfacewillreplace *theIPv6headerwith6LoWPANheader.Atworstcasethe6LoWPAN *headerhasLOWPAN_IPHC_MAX_HEADER_LENmorebytesthantheIPv6 *header.
*/
ldev->needed_headroom = LOWPAN_IPHC_MAX_HEADER_LEN +
wdev->needed_headroom;
ldev->needed_tailroom = wdev->needed_tailroom;
if (ndev->type != ARPHRD_IEEE802154) return NOTIFY_DONE;
wpan_dev = ndev->ieee802154_ptr; if (!wpan_dev) return NOTIFY_DONE;
switch (event) { case NETDEV_UNREGISTER: /* Check if wpan interface is unregistered that we *alsodeletepossiblelowpaninterfaceswhichbelongs *tothewpaninterface.
*/ if (wpan_dev->lowpan_dev)
lowpan_dellink(wpan_dev->lowpan_dev, NULL); break; default: return NOTIFY_DONE;
}
module_init(lowpan_init_module);
module_exit(lowpan_cleanup_module);
MODULE_DESCRIPTION("IPv6 over Low power Wireless Personal Area Network IEEE 802.15.4 core");
MODULE_LICENSE("GPL");
MODULE_ALIAS_RTNL_LINK("lowpan");
Messung V0.5 in Prozent
¤ Dauer der Verarbeitung: 0.10 Sekunden
(vorverarbeitet am 2026-09-28)
¤
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.