/* * INET An implementation of the TCP/IP protocol suite for the LINUX * operating system. INET is implemented using the BSD Socket * interface as the means of communication with the user level. * * PF_INET6 protocol dispatch tables. * * Authors: Pedro Roque <roque@di.fc.ul.pt> * * 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. */ /* * Changes: * * Vince Laviano (vince@cs.stanford.edu) 16 May 2001 * - Removed unused variable 'inet6_protocol_base' * - Modified inet6_del_protocol() to correctly maintain copy bit. */ #include <linux/module.h> #include <linux/netdevice.h> #include <linux/spinlock.h> #include <net/protocol.h> #if IS_ENABLED(CONFIG_IPV6) const struct inet6_protocol __rcu *inet6_protos[MAX_INET_PROTOS] __read_mostly; EXPORT_SYMBOL(inet6_protos); int inet6_add_protocol(const struct inet6_protocol *prot, unsigned char protocol) { return !cmpxchg((const struct inet6_protocol **)&inet6_protos[protocol], NULL, prot) ? 0 : -1; } EXPORT_SYMBOL(inet6_add_protocol); int inet6_del_protocol(const struct inet6_protocol *prot, unsigned char protocol) { int ret; ret = (cmpxchg((const struct inet6_protocol **)&inet6_protos[protocol], prot, NULL) == prot) ? 0 : -1; synchronize_net(); return ret; } EXPORT_SYMBOL(inet6_del_protocol); #endif const struct net_offload __rcu *inet6_offloads[MAX_INET_PROTOS] __read_mostly; EXPORT_SYMBOL(inet6_offloads); int inet6_add_offload(const struct net_offload *prot, unsigned char protocol) { return !cmpxchg((const struct net_offload **)&inet6_offloads[protocol], NULL, prot) ? 0 : -1; } EXPORT_SYMBOL(inet6_add_offload); int inet6_del_offload(const struct net_offload *prot, unsigned char protocol) { int ret; ret = (cmpxchg((const struct net_offload **)&inet6_offloads[protocol], prot, NULL) == prot) ? 0 : -1; synchronize_net(); return ret; } EXPORT_SYMBOL(inet6_del_offload); /linux/net-next.git/log/include/net/gre.h'> <input type='hidden' name='id' value='206c4720092d2a24bfefc041b377e889a220ffbf'/><select name='qt'> <option value='grep'>log msg</option> <option value='author'>author</option> <option value='committer'>committer</option> <option value='range'>range</option> </select> <input class='txt' type='search' size='10' name='q' value=''/> <input type='submit' value='search'/> </form> </td></tr></table> <div class='path'>path: <a href='/cgit.cgi/linux/net-next.git/diff/?id=206c4720092d2a24bfefc041b377e889a220ffbf'>root</a>/<a href='/cgit.cgi/linux/net-next.git/diff/include?id=206c4720092d2a24bfefc041b377e889a220ffbf'>include</a>/<a href='/cgit.cgi/linux/net-next.git/diff/include/net?id=206c4720092d2a24bfefc041b377e889a220ffbf'>net</a>/<a href='/cgit.cgi/linux/net-next.git/diff/include/net/gre.h?id=206c4720092d2a24bfefc041b377e889a220ffbf'>gre.h</a></div><div class='content'><div class='cgit-panel'><b>diff options</b><form method='get'><input type='hidden' name='id' value='206c4720092d2a24bfefc041b377e889a220ffbf'/><table><tr><td colspan='2'/></tr><tr><td class='label'>context:</td><td class='ctrl'><select name='context' onchange='this.form.submit();'><option value='1'>1</option><option value='2'>2</option><option value='3' selected='selected'>3</option><option value='4'>4</option><option value='5'>5</option><option value='6'>6</option><option value='7'>7</option><option value='8'>8</option><option value='9'>9</option><option value='10'>10</option><option value='15'>15</option><option value='20'>20</option><option value='25'>25</option><option value='30'>30</option><option value='35'>35</option><option value='40'>40</option></select></td></tr><tr><td class='label'>space:</td><td class='ctrl'><select name='ignorews' onchange='this.form.submit();'><option value='0' selected='selected'>include</option><option value='1'>ignore</option></select></td></tr><tr><td class='label'>mode:</td><td class='ctrl'><select name='dt' onchange='this.form.submit();'><option value='0' selected='selected'>unified</option><option value='1'>ssdiff</option><option value='2'>stat only</option></select></td></tr><tr><td/><td class='ctrl'><noscript><input type='submit' value='reload'/></noscript></td></tr></table></form></div><div class='diffstat-header'><a href='/cgit.cgi/linux/net-next.git/diff/?id=206c4720092d2a24bfefc041b377e889a220ffbf'>Diffstat</a> (limited to 'include/net/gre.h')</div><table summary='diffstat' class='diffstat'>