__  __    __   __  _____      _            _          _____ _          _ _ 
 |  \/  |   \ \ / / |  __ \    (_)          | |        / ____| |        | | |
 | \  / |_ __\ V /  | |__) | __ ___   ____ _| |_ ___  | (___ | |__   ___| | |
 | |\/| | '__|> <   |  ___/ '__| \ \ / / _` | __/ _ \  \___ \| '_ \ / _ \ | |
 | |  | | |_ / . \  | |   | |  | |\ V / (_| | ||  __/  ____) | | | |  __/ | |
 |_|  |_|_(_)_/ \_\ |_|   |_|  |_| \_/ \__,_|\__\___| |_____/|_| |_|\___V 2.1
 if you need WebShell for Seo everyday contact me on Telegram
 Telegram Address : @jackleet
        
        
For_More_Tools: Telegram: @jackleet | Bulk Smtp support mail sender | Business Mail Collector | Mail Bouncer All Mail | Bulk Office Mail Validator | Html Letter private



Upload:

Command:

[email protected]: ~ $
/* SPDX-License-Identifier: GPL-2.0-or-later */
/*
 *	Linux INET6 implementation 
 *
 *	Authors:
 *	Pedro Roque		<[email protected]>	
 */

#ifndef _IP6_FIB_H
#define _IP6_FIB_H

#include <linux/ipv6_route.h>
#include <linux/rtnetlink.h>
#include <linux/spinlock.h>
#include <linux/notifier.h>
#include <net/dst.h>
#include <net/flow.h>
#include <net/ip_fib.h>
#include <net/netlink.h>
#include <net/inetpeer.h>
#include <net/fib_notifier.h>
#include <linux/indirect_call_wrapper.h>
#include <uapi/linux/bpf.h>

#ifdef CONFIG_IPV6_MULTIPLE_TABLES
#define FIB6_TABLE_HASHSZ 256
#else
#define FIB6_TABLE_HASHSZ 1
#endif

#define RT6_DEBUG 2

struct rt6_info;
struct fib6_info;

struct fib6_config {
	u32		fc_table;
	u32		fc_metric;
	int		fc_dst_len;
	int		fc_src_len;
	int		fc_ifindex;
	u32		fc_flags;
	u32		fc_protocol;
	u16		fc_type;        /* only 8 bits are used */
	u16		fc_delete_all_nh : 1,
			fc_ignore_dev_down:1,
			__unused : 14;
	u32		fc_nh_id;

	struct in6_addr	fc_dst;
	struct in6_addr	fc_src;
	struct in6_addr	fc_prefsrc;
	struct in6_addr	fc_gateway;

	unsigned long	fc_expires;
	struct nlattr	*fc_mx;
	int		fc_mx_len;
	int		fc_mp_len;
	struct nlattr	*fc_mp;

	struct nl_info	fc_nlinfo;
	struct nlattr	*fc_encap;
	u16		fc_encap_type;
	bool		fc_is_fdb;
};

struct fib6_node {
	struct fib6_node __rcu	*parent;
	struct fib6_node __rcu	*left;
	struct fib6_node __rcu	*right;
#ifdef CONFIG_IPV6_SUBTREES
	struct fib6_node __rcu	*subtree;
#endif
	struct fib6_info __rcu	*leaf;

	__u16			fn_bit;		/* bit key */
	__u16			fn_flags;
	int			fn_sernum;
	struct fib6_info __rcu	*rr_ptr;
	struct rcu_head		rcu;
};

struct fib6_gc_args {
	int			timeout;
	int			more;
};

#ifndef CONFIG_IPV6_SUBTREES
#define FIB6_SUBTREE(fn)	NULL

static inline bool fib6_routes_require_src(const struct net *net)
{
	return false;
}

static inline void fib6_routes_require_src_inc(struct net *net) {}
static inline void fib6_routes_require_src_dec(struct net *net) {}

#else

static inline bool fib6_routes_require_src(const struct net *net)
{
	return net->ipv6.fib6_routes_require_src > 0;
}

static inline void fib6_routes_require_src_inc(struct net *net)
{
	net->ipv6.fib6_routes_require_src++;
}

static inline void fib6_routes_require_src_dec(struct net *net)
{
	net->ipv6.fib6_routes_require_src--;
}

#define FIB6_SUBTREE(fn)	(rcu_dereference_protected((fn)->subtree, 1))
#endif

/*
 *	routing information
 *
 */

struct rt6key {
	struct in6_addr	addr;
	int		plen;
};

struct fib6_table;

struct rt6_exception_bucket {
	struct hlist_head	chain;
	int			depth;
};

struct rt6_exception {
	struct hlist_node	hlist;
	struct rt6_info		*rt6i;
	unsigned long		stamp;
	struct rcu_head		rcu;
};

#define FIB6_EXCEPTION_BUCKET_SIZE_SHIFT 10
#define FIB6_EXCEPTION_BUCKET_SIZE (1 << FIB6_EXCEPTION_BUCKET_SIZE_SHIFT)
#define FIB6_MAX_DEPTH 5

struct fib6_nh {
	struct fib_nh_common	nh_common;

#ifdef CONFIG_IPV6_ROUTER_PREF
	unsigned long		last_probe;
#endif

	struct rt6_info * __percpu *rt6i_pcpu;
	struct rt6_exception_bucket __rcu *rt6i_exception_bucket;
};

struct fib6_info {
	struct fib6_table		*fib6_table;
	struct fib6_info __rcu		*fib6_next;
	struct fib6_node __rcu		*fib6_node;

	/* Multipath routes:
	 * siblings is a list of fib6_info that have the same metric/weight,
	 * destination, but not the same gateway. nsiblings is just a cache
	 * to speed up lookup.
	 */
	union {
		struct list_head	fib6_siblings;
		struct list_head	nh_list;
	};
	unsigned int			fib6_nsiblings;

	refcount_t			fib6_ref;
	unsigned long			expires;

	struct hlist_node		gc_link;

	struct dst_metrics		*fib6_metrics;
#define fib6_pmtu		fib6_metrics->metrics[RTAX_MTU-1]

	struct rt6key			fib6_dst;
	u32				fib6_flags;
	struct rt6key			fib6_src;
	struct rt6key			fib6_prefsrc;

	u32				fib6_metric;
	u8				fib6_protocol;
	u8				fib6_type;

	u8				offload;
	u8				trap;
	u8				offload_failed;

	u8				should_flush:1,
					dst_nocount:1,
					dst_nopolicy:1,
					fib6_destroying:1,
					unused:4;

	struct rcu_head			rcu;
	struct nexthop			*nh;
	struct fib6_nh			fib6_nh[];
};

struct rt6_info {
	struct dst_entry		dst;
	struct fib6_info __rcu		*from;
	int				sernum;

	struct rt6key			rt6i_dst;
	struct rt6key			rt6i_src;
	struct in6_addr			rt6i_gateway;
	struct inet6_dev		*rt6i_idev;
	u32				rt6i_flags;

	/* more non-fragment space at head required */
	unsigned short			rt6i_nfheader_len;
};

struct fib6_result {
	struct fib6_nh		*nh;
	struct fib6_info	*f6i;
	u32			fib6_flags;
	u8			fib6_type;
	struct rt6_info		*rt6;
};

#define for_each_fib6_node_rt_rcu(fn)					\
	for (rt = rcu_dereference((fn)->leaf); rt;			\
	     rt = rcu_dereference(rt->fib6_next))

#define for_each_fib6_walker_rt(w)					\
	for (rt = (w)->leaf; rt;					\
	     rt = rcu_dereference_protected(rt->fib6_next, 1))

#define dst_rt6_info(_ptr) container_of_const(_ptr, struct rt6_info, dst)

static inline struct inet6_dev *ip6_dst_idev(const struct dst_entry *dst)
{
	return dst_rt6_info(dst)->rt6i_idev;
}

static inline bool fib6_requires_src(const struct fib6_info *rt)
{
	return rt->fib6_src.plen > 0;
}

/* The callers should hold f6i->fib6_table->tb6_lock if a route has ever
 * been added to a table before.
 */
static inline void fib6_clean_expires(struct fib6_info *f6i)
{
	f6i->fib6_flags &= ~RTF_EXPIRES;
	f6i->expires = 0;
}

/* The callers should hold f6i->fib6_table->tb6_lock if a route has ever
 * been added to a table before.
 */
static inline void fib6_set_expires(struct fib6_info *f6i,
				    unsigned long expires)
{
	f6i->expires = expires;
	f6i->fib6_flags |= RTF_EXPIRES;
}

static inline bool fib6_check_expired(const struct fib6_info *f6i)
{
	if (f6i->fib6_flags & RTF_EXPIRES)
		return time_after(jiffies, f6i->expires);
	return false;
}

/* Function to safely get fn->fn_sernum for passed in rt
 * and store result in passed in cookie.
 * Return true if we can get cookie safely
 * Return false if not
 */
static inline bool fib6_get_cookie_safe(const struct fib6_info *f6i,
					u32 *cookie)
{
	struct fib6_node *fn;
	bool status = false;

	fn = rcu_dereference(f6i->fib6_node);

	if (fn) {
		*cookie = READ_ONCE(fn->fn_sernum);
		/* pairs with smp_wmb() in __fib6_update_sernum_upto_root() */
		smp_rmb();
		status = true;
	}

	return status;
}

static inline u32 rt6_get_cookie(const struct rt6_info *rt)
{
	struct fib6_info *from;
	u32 cookie = 0;

	if (rt->sernum)
		return rt->sernum;

	rcu_read_lock();

	from = rcu_dereference(rt->from);
	if (from)
		fib6_get_cookie_safe(from, &cookie);

	rcu_read_unlock();

	return cookie;
}

static inline void ip6_rt_put(struct rt6_info *rt)
{
	/* dst_release() accepts a NULL parameter.
	 * We rely on dst being first structure in struct rt6_info
	 */
	BUILD_BUG_ON(offsetof(struct rt6_info, dst) != 0);
	dst_release(&rt->dst);
}

struct fib6_info *fib6_info_alloc(gfp_t gfp_flags, bool with_fib6_nh);
void fib6_info_destroy_rcu(struct rcu_head *head);

static inline void fib6_info_hold(struct fib6_info *f6i)
{
	refcount_inc(&f6i->fib6_ref);
}

static inline bool fib6_info_hold_safe(struct fib6_info *f6i)
{
	return refcount_inc_not_zero(&f6i->fib6_ref);
}

static inline void fib6_info_release(struct fib6_info *f6i)
{
	if (f6i && refcount_dec_and_test(&f6i->fib6_ref)) {
		DEBUG_NET_WARN_ON_ONCE(!hlist_unhashed(&f6i->gc_link));
		call_rcu_hurry(&f6i->rcu, fib6_info_destroy_rcu);
	}
}

enum fib6_walk_state {
#ifdef CONFIG_IPV6_SUBTREES
	FWS_S,
#endif
	FWS_L,
	FWS_R,
	FWS_C,
	FWS_U
};

struct fib6_walker {
	struct list_head lh;
	struct fib6_node *root, *node;
	struct fib6_info *leaf;
	enum fib6_walk_state state;
	unsigned int skip;
	unsigned int count;
	unsigned int skip_in_node;
	int (*func)(struct fib6_walker *);
	void *args;
};

struct rt6_statistics {
	__u32		fib_nodes;		/* all fib6 nodes */
	__u32		fib_route_nodes;	/* intermediate nodes */
	__u32		fib_rt_entries;		/* rt entries in fib table */
	__u32		fib_rt_cache;		/* cached rt entries in exception table */
	__u32		fib_discarded_routes;	/* total number of routes delete */

	/* The following stat is not protected by any lock */
	atomic_t	fib_rt_alloc;		/* total number of routes alloced */
};

#define RTN_TL_ROOT	0x0001
#define RTN_ROOT	0x0002		/* tree root node		*/
#define RTN_RTINFO	0x0004		/* node with valid routing info	*/

/*
 *	priority levels (or metrics)
 *
 */


struct fib6_table {
	struct hlist_node	tb6_hlist;
	u32			tb6_id;
	spinlock_t		tb6_lock;
	struct fib6_node	tb6_root;
	struct inet_peer_base	tb6_peers;
	unsigned int		flags;
	unsigned int		fib_seq; /* writes protected by rtnl_mutex */
	struct hlist_head       tb6_gc_hlist;	/* GC candidates */
#define RT6_TABLE_HAS_DFLT_ROUTER	BIT(0)
};

#define RT6_TABLE_UNSPEC	RT_TABLE_UNSPEC
#define RT6_TABLE_MAIN		RT_TABLE_MAIN
#define RT6_TABLE_DFLT		RT6_TABLE_MAIN
#define RT6_TABLE_INFO		RT6_TABLE_MAIN
#define RT6_TABLE_PREFIX	RT6_TABLE_MAIN

#ifdef CONFIG_IPV6_MULTIPLE_TABLES
#define FIB6_TABLE_MIN		1
#define FIB6_TABLE_MAX		RT_TABLE_MAX
#define RT6_TABLE_LOCAL		RT_TABLE_LOCAL
#else
#define FIB6_TABLE_MIN		RT_TABLE_MAIN
#define FIB6_TABLE_MAX		FIB6_TABLE_MIN
#define RT6_TABLE_LOCAL		RT6_TABLE_MAIN
#endif

typedef struct rt6_info *(*pol_lookup_t)(struct net *,
					 struct fib6_table *,
					 struct flowi6 *,
					 const struct sk_buff *, int);

struct fib6_entry_notifier_info {
	struct fib_notifier_info info; /* must be first */
	struct fib6_info *rt;
	unsigned int nsiblings;
};

/*
 *	exported functions
 */

struct fib6_table *fib6_get_table(struct net *net, u32 id);
struct fib6_table *fib6_new_table(struct net *net, u32 id);
struct dst_entry *fib6_rule_lookup(struct net *net, struct flowi6 *fl6,
				   const struct sk_buff *skb,
				   int flags, pol_lookup_t lookup);

/* called with rcu lock held; can return error pointer
 * caller needs to select path
 */
int fib6_lookup(struct net *net, int oif, struct flowi6 *fl6,
		struct fib6_result *res, int flags);

/* called with rcu lock held; caller needs to select path */
int fib6_table_lookup(struct net *net, struct fib6_table *table,
		      int oif, struct flowi6 *fl6, struct fib6_result *res,
		      int strict);

void fib6_select_path(const struct net *net, struct fib6_result *res,
		      struct flowi6 *fl6, int oif, bool have_oif_match,
		      const struct sk_buff *skb, int strict);
struct fib6_node *fib6_node_lookup(struct fib6_node *root,
				   const struct in6_addr *daddr,
				   const struct in6_addr *saddr);

struct fib6_node *fib6_locate(struct fib6_node *root,
			      const struct in6_addr *daddr, int dst_len,
			      const struct in6_addr *saddr, int src_len,
			      bool exact_match);

void fib6_clean_all(struct net *net, int (*func)(struct fib6_info *, void *arg),
		    void *arg);
void fib6_clean_all_skip_notify(struct net *net,
				int (*func)(struct fib6_info *, void *arg),
				void *arg);

int fib6_add(struct fib6_node *root, struct fib6_info *rt,
	     struct nl_info *info, struct netlink_ext_ack *extack);
int fib6_del(struct fib6_info *rt, struct nl_info *info);

static inline
void rt6_get_prefsrc(const struct rt6_info *rt, struct in6_addr *addr)
{
	const struct fib6_info *from;

	rcu_read_lock();

	from = rcu_dereference(rt->from);
	if (from)
		*addr = from->fib6_prefsrc.addr;
	else
		*addr = in6addr_any;

	rcu_read_unlock();
}

int fib6_nh_init(struct net *net, struct fib6_nh *fib6_nh,
		 struct fib6_config *cfg, gfp_t gfp_flags,
		 struct netlink_ext_ack *extack);
void fib6_nh_release(struct fib6_nh *fib6_nh);
void fib6_nh_release_dsts(struct fib6_nh *fib6_nh);

int call_fib6_entry_notifiers(struct net *net,
			      enum fib_event_type event_type,
			      struct fib6_info *rt,
			      struct netlink_ext_ack *extack);
int call_fib6_multipath_entry_notifiers(struct net *net,
					enum fib_event_type event_type,
					struct fib6_info *rt,
					unsigned int nsiblings,
					struct netlink_ext_ack *extack);
int call_fib6_entry_notifiers_replace(struct net *net, struct fib6_info *rt);
void fib6_rt_update(struct net *net, struct fib6_info *rt,
		    struct nl_info *info);
void inet6_rt_notify(int event, struct fib6_info *rt, struct nl_info *info,
		     unsigned int flags);

void fib6_run_gc(unsigned long expires, struct net *net, bool force);

void fib6_gc_cleanup(void);

int fib6_init(void);

/* Add the route to the gc list if it is not already there
 *
 * The callers should hold f6i->fib6_table->tb6_lock.
 */
static inline void fib6_add_gc_list(struct fib6_info *f6i)
{
	/* If fib6_node is null, the f6i is not in (or removed from) the
	 * table.
	 *
	 * There is a gap between finding the f6i from the table and
	 * calling this function without the protection of the tb6_lock.
	 * This check makes sure the f6i is not added to the gc list when
	 * it is not on the table.
	 */
	if (!rcu_dereference_protected(f6i->fib6_node,
				       lockdep_is_held(&f6i->fib6_table->tb6_lock)))
		return;

	if (hlist_unhashed(&f6i->gc_link))
		hlist_add_head(&f6i->gc_link, &f6i->fib6_table->tb6_gc_hlist);
}

/* Remove the route from the gc list if it is on the list.
 *
 * The callers should hold f6i->fib6_table->tb6_lock.
 */
static inline void fib6_remove_gc_list(struct fib6_info *f6i)
{
	if (!hlist_unhashed(&f6i->gc_link))
		hlist_del_init(&f6i->gc_link);
}

struct ipv6_route_iter {
	struct seq_net_private p;
	struct fib6_walker w;
	loff_t skip;
	struct fib6_table *tbl;
	int sernum;
};

extern const struct seq_operations ipv6_route_seq_ops;

int call_fib6_notifier(struct notifier_block *nb,
		       enum fib_event_type event_type,
		       struct fib_notifier_info *info);
int call_fib6_notifiers(struct net *net, enum fib_event_type event_type,
			struct fib_notifier_info *info);

int __net_init fib6_notifier_init(struct net *net);
void __net_exit fib6_notifier_exit(struct net *net);

unsigned int fib6_tables_seq_read(const struct net *net);
int fib6_tables_dump(struct net *net, struct notifier_block *nb,
		     struct netlink_ext_ack *extack);

void fib6_update_sernum(struct net *net, struct fib6_info *rt);
void fib6_update_sernum_upto_root(struct net *net, struct fib6_info *rt);
void fib6_update_sernum_stub(struct net *net, struct fib6_info *f6i);

void fib6_metric_set(struct fib6_info *f6i, int metric, u32 val);
static inline bool fib6_metric_locked(struct fib6_info *f6i, int metric)
{
	return !!(f6i->fib6_metrics->metrics[RTAX_LOCK - 1] & (1 << metric));
}
void fib6_info_hw_flags_set(struct net *net, struct fib6_info *f6i,
			    bool offload, bool trap, bool offload_failed);

#if IS_BUILTIN(CONFIG_IPV6) && defined(CONFIG_BPF_SYSCALL)
struct bpf_iter__ipv6_route {
	__bpf_md_ptr(struct bpf_iter_meta *, meta);
	__bpf_md_ptr(struct fib6_info *, rt);
};
#endif

INDIRECT_CALLABLE_DECLARE(struct rt6_info *ip6_pol_route_output(struct net *net,
					     struct fib6_table *table,
					     struct flowi6 *fl6,
					     const struct sk_buff *skb,
					     int flags));
INDIRECT_CALLABLE_DECLARE(struct rt6_info *ip6_pol_route_input(struct net *net,
					     struct fib6_table *table,
					     struct flowi6 *fl6,
					     const struct sk_buff *skb,
					     int flags));
INDIRECT_CALLABLE_DECLARE(struct rt6_info *__ip6_route_redirect(struct net *net,
					     struct fib6_table *table,
					     struct flowi6 *fl6,
					     const struct sk_buff *skb,
					     int flags));
INDIRECT_CALLABLE_DECLARE(struct rt6_info *ip6_pol_route_lookup(struct net *net,
					     struct fib6_table *table,
					     struct flowi6 *fl6,
					     const struct sk_buff *skb,
					     int flags));
static inline struct rt6_info *pol_lookup_func(pol_lookup_t lookup,
						struct net *net,
						struct fib6_table *table,
						struct flowi6 *fl6,
						const struct sk_buff *skb,
						int flags)
{
	return INDIRECT_CALL_4(lookup,
			       ip6_pol_route_output,
			       ip6_pol_route_input,
			       ip6_pol_route_lookup,
			       __ip6_route_redirect,
			       net, table, fl6, skb, flags);
}

#ifdef CONFIG_IPV6_MULTIPLE_TABLES
static inline bool fib6_has_custom_rules(const struct net *net)
{
	return net->ipv6.fib6_has_custom_rules;
}

int fib6_rules_init(void);
void fib6_rules_cleanup(void);
bool fib6_rule_default(const struct fib_rule *rule);
int fib6_rules_dump(struct net *net, struct notifier_block *nb,
		    struct netlink_ext_ack *extack);
unsigned int fib6_rules_seq_read(const struct net *net);

static inline bool fib6_rules_early_flow_dissect(struct net *net,
						 struct sk_buff *skb,
						 struct flowi6 *fl6,
						 struct flow_keys *flkeys)
{
	unsigned int flag = FLOW_DISSECTOR_F_STOP_AT_ENCAP;

	if (!net->ipv6.fib6_rules_require_fldissect)
		return false;

	memset(flkeys, 0, sizeof(*flkeys));
	__skb_flow_dissect(net, skb, &flow_keys_dissector,
			   flkeys, NULL, 0, 0, 0, flag);

	fl6->fl6_sport = flkeys->ports.src;
	fl6->fl6_dport = flkeys->ports.dst;
	fl6->flowi6_proto = flkeys->basic.ip_proto;

	return true;
}
#else
static inline bool fib6_has_custom_rules(const struct net *net)
{
	return false;
}
static inline int               fib6_rules_init(void)
{
	return 0;
}
static inline void              fib6_rules_cleanup(void)
{
	return ;
}
static inline bool fib6_rule_default(const struct fib_rule *rule)
{
	return true;
}
static inline int fib6_rules_dump(struct net *net, struct notifier_block *nb,
				  struct netlink_ext_ack *extack)
{
	return 0;
}
static inline unsigned int fib6_rules_seq_read(const struct net *net)
{
	return 0;
}
static inline bool fib6_rules_early_flow_dissect(struct net *net,
						 struct sk_buff *skb,
						 struct flowi6 *fl6,
						 struct flow_keys *flkeys)
{
	return false;
}
#endif
#endif

Filemanager

Name Type Size Permission Actions
9p Folder 0755
bluetooth Folder 0755
caif Folder 0755
iucv Folder 0755
libeth Folder 0755
mana Folder 0755
netfilter Folder 0755
netns Folder 0755
nfc Folder 0755
page_pool Folder 0755
phonet Folder 0755
sctp Folder 0755
tc_act Folder 0755
6lowpan.h File 10.03 KB 0644
Space.h File 455 B 0644
act_api.h File 9.31 KB 0644
addrconf.h File 15.1 KB 0644
af_ieee802154.h File 1.19 KB 0644
af_rxrpc.h File 3.3 KB 0644
af_unix.h File 3.25 KB 0644
af_vsock.h File 8.48 KB 0644
ah.h File 382 B 0644
amt.h File 8.35 KB 0644
arp.h File 1.95 KB 0644
atmclip.h File 1.48 KB 0644
ax25.h File 14.93 KB 0644
ax88796.h File 1.43 KB 0644
bareudp.h File 333 B 0644
bond_3ad.h File 9.45 KB 0644
bond_alb.h File 6.11 KB 0644
bond_options.h File 4.83 KB 0644
bonding.h File 21.34 KB 0644
bpf_sk_storage.h File 1.74 KB 0644
busy_poll.h File 4.33 KB 0644
calipso.h File 1.55 KB 0644
cfg80211-wext.h File 1.86 KB 0644
cfg80211.h File 345.53 KB 0644
cfg802154.h File 16.68 KB 0644
checksum.h File 5.11 KB 0644
cipso_ipv4.h File 7.42 KB 0644
cls_cgroup.h File 2.04 KB 0644
codel.h File 5.86 KB 0644
codel_impl.h File 8.3 KB 0644
codel_qdisc.h File 2.95 KB 0644
compat.h File 2.48 KB 0644
datalink.h File 590 B 0644
dcbevent.h File 766 B 0644
dcbnl.h File 4.98 KB 0644
devlink.h File 72.01 KB 0644
dropreason-core.h File 18.44 KB 0644
dropreason.h File 1.18 KB 0644
dsa.h File 40.96 KB 0644
dsa_stubs.h File 1.28 KB 0644
dscp.h File 3.18 KB 0644
dsfield.h File 1.12 KB 0644
dst.h File 14.76 KB 0644
dst_cache.h File 2.97 KB 0644
dst_metadata.h File 6.56 KB 0644
dst_ops.h File 2.07 KB 0644
eee.h File 832 B 0644
erspan.h File 9.03 KB 0644
esp.h File 1.18 KB 0644
espintcp.h File 972 B 0644
ethoc.h File 439 B 0644
failover.h File 1.18 KB 0644
fib_notifier.h File 1.36 KB 0644
fib_rules.h File 5.39 KB 0644
firewire.h File 599 B 0644
flow.h File 4.96 KB 0644
flow_dissector.h File 12.65 KB 0644
flow_offload.h File 20.18 KB 0644
fou.h File 578 B 0644
fq.h File 2.41 KB 0644
fq_impl.h File 7.96 KB 0644
garp.h File 2.67 KB 0644
gen_stats.h File 2.99 KB 0644
genetlink.h File 20.23 KB 0644
geneve.h File 1.84 KB 0644
gre.h File 3.79 KB 0644
gro.h File 15.56 KB 0644
gro_cells.h File 443 B 0644
gso.h File 3.2 KB 0644
gtp.h File 1.51 KB 0644
gue.h File 3.29 KB 0644
handshake.h File 1.39 KB 0644
hotdata.h File 1.62 KB 0644
hwbm.h File 997 B 0644
icmp.h File 1.87 KB 0644
ieee80211_radiotap.h File 23.25 KB 0644
ieee802154_netdev.h File 13.02 KB 0644
ieee8021q.h File 1.42 KB 0644
if_inet6.h File 6.62 KB 0644
ife.h File 1.03 KB 0644
inet6_connection_sock.h File 794 B 0644
inet6_hashtables.h File 5.57 KB 0644
inet_common.h File 2.83 KB 0644
inet_connection_sock.h File 11.77 KB 0644
inet_dscp.h File 1.55 KB 0644
inet_ecn.h File 7.83 KB 0644
inet_frag.h File 5.25 KB 0644
inet_hashtables.h File 16.6 KB 0644
inet_sock.h File 11.77 KB 0644
inet_timewait_sock.h File 3.79 KB 0644
inetpeer.h File 3.23 KB 0644
ioam6.h File 1.33 KB 0644
ip.h File 23.37 KB 0644
ip6_checksum.h File 2.3 KB 0644
ip6_fib.h File 17.08 KB 0644
ip6_route.h File 10.21 KB 0644
ip6_tunnel.h File 5.04 KB 0644
ip_fib.h File 17.36 KB 0644
ip_tunnels.h File 19.36 KB 0644
ip_vs.h File 53.83 KB 0644
ipcomp.h File 737 B 0644
ipconfig.h File 837 B 0644
ipv6.h File 37.89 KB 0644
ipv6_frag.h File 3.38 KB 0644
ipv6_stubs.h File 3.92 KB 0644
iw_handler.h File 18.97 KB 0644
kcm.h File 4.84 KB 0644
l3mdev.h File 7.03 KB 0644
lag.h File 409 B 0644
lapb.h File 4.82 KB 0644
llc.h File 4.41 KB 0644
llc_c_ac.h File 9.32 KB 0644
llc_c_ev.h File 10.61 KB 0644
llc_c_st.h File 1.78 KB 0644
llc_conn.h File 4.11 KB 0644
llc_if.h File 2.17 KB 0644
llc_pdu.h File 14.46 KB 0644
llc_s_ac.h File 1.59 KB 0644
llc_s_ev.h File 2.22 KB 0644
llc_s_st.h File 1.03 KB 0644
llc_sap.h File 1.08 KB 0644
lwtunnel.h File 6.69 KB 0644
mac80211.h File 303.91 KB 0644
mac802154.h File 14.88 KB 0644
macsec.h File 10.53 KB 0644
mctp.h File 8.67 KB 0644
mctpdevice.h File 1.33 KB 0644
mip6.h File 1016 B 0644
mld.h File 2.85 KB 0644
mpls.h File 943 B 0644
mpls_iptunnel.h File 481 B 0644
mptcp.h File 7.65 KB 0644
mrp.h File 3.13 KB 0644
ncsi.h File 1.94 KB 0644
ndisc.h File 14.14 KB 0644
neighbour.h File 16.64 KB 0644
neighbour_tables.h File 253 B 0644
net_debug.h File 5.23 KB 0644
net_failover.h File 1023 B 0644
net_namespace.h File 14.51 KB 0644
net_ratelimit.h File 220 B 0644
net_shaper.h File 3.49 KB 0644
net_trackers.h File 424 B 0644
netdev_queues.h File 10.38 KB 0644
netdev_rx_queue.h File 1.44 KB 0644
netevent.h File 1.04 KB 0644
netkit.h File 1.16 KB 0644
netlabel.h File 20.57 KB 0644
netlink.h File 72.67 KB 0644
netmem.h File 6.69 KB 0644
netprio_cgroup.h File 1.02 KB 0644
netrom.h File 7.73 KB 0644
nexthop.h File 12.68 KB 0644
nl802154.h File 16.04 KB 0644
nsh.h File 12.3 KB 0644
p8022.h File 403 B 0644
pfcp.h File 1.91 KB 0644
pie.h File 3.6 KB 0644
ping.h File 2.66 KB 0644
pkt_cls.h File 25.99 KB 0644
pkt_sched.h File 7.4 KB 0644
pptp.h File 604 B 0644
proto_memory.h File 1.9 KB 0644
protocol.h File 3.85 KB 0644
psample.h File 1.15 KB 0644
psnap.h File 430 B 0644
raw.h File 2.46 KB 0644
rawv6.h File 862 B 0644
red.h File 11.39 KB 0644
regulatory.h File 9.88 KB 0644
request_sock.h File 7.25 KB 0644
rose.h File 7.71 KB 0644
route.h File 11.89 KB 0644
rpl.h File 749 B 0644
rps.h File 3.91 KB 0644
rsi_91x.h File 1.67 KB 0644
rstreason.h File 7.22 KB 0644
rtnetlink.h File 8.06 KB 0644
rtnh.h File 859 B 0644
sch_generic.h File 34.42 KB 0644
scm.h File 5.36 KB 0644
secure_seq.h File 868 B 0644
seg6.h File 2.43 KB 0644
seg6_hmac.h File 1.7 KB 0644
seg6_local.h File 667 B 0644
selftests.h File 582 B 0644
slhc_vj.h File 6.67 KB 0644
smc.h File 2.41 KB 0644
snmp.h File 5.14 KB 0644
sock.h File 84.05 KB 0644
sock_reuseport.h File 1.82 KB 0644
stp.h File 412 B 0644
strparser.h File 4.34 KB 0644
switchdev.h File 15.1 KB 0644
tc_wrapper.h File 6.29 KB 0644
tcp.h File 84.45 KB 0644
tcp_ao.h File 11.15 KB 0644
tcp_states.h File 1.3 KB 0644
tcx.h File 4.39 KB 0644
timewait_sock.h File 641 B 0644
tipc.h File 2.35 KB 0644
tls.h File 13.37 KB 0644
tls_prot.h File 1.84 KB 0644
tls_toe.h File 2.94 KB 0644
transp_v6.h File 1.88 KB 0644
tso.h File 721 B 0644
tun_proto.h File 1015 B 0644
udp.h File 18.83 KB 0644
udp_tunnel.h File 12.49 KB 0644
udplite.h File 2.3 KB 0644
vsock_addr.h File 662 B 0644
vxlan.h File 15.86 KB 0644
wext.h File 1.47 KB 0644
x25.h File 9.46 KB 0644
x25device.h File 387 B 0644
xdp.h File 19.73 KB 0644
xdp_priv.h File 427 B 0644
xdp_sock.h File 6.64 KB 0644
xdp_sock_drv.h File 9.28 KB 0644
xfrm.h File 62.99 KB 0644
xsk_buff_pool.h File 7.04 KB 0644
Filemanager