/usr/src/kernels/4.18.0-553.157.1.el8_10.x86_64/include/net
NameSizeModeActions
9p/-0755rm
bluetooth/-0755rm
caif/-0755rm
iucv/-0755rm
mana/-0755rm
netfilter/-0755rm
netns/-0755rm
nfc/-0755rm
phonet/-0755rm
sctp/-0755rm
tc_act/-0755rm
6lowpan.h102710644editdlrm
act_api.h95590644editdlrm
addrconf.h138260644editdlrm
af_ieee802154.h15910644editdlrm
af_rxrpc.h29760644editdlrm
af_unix.h22720644editdlrm
af_vsock.h72950644editdlrm
ah.h3820644editdlrm
arp.h20520644editdlrm
atmclip.h15150644editdlrm
ax25.h149990644editdlrm
ax88796.h14880644editdlrm
bareudp.h3330644editdlrm
bonding.h202250644editdlrm
bond_3ad.h96290644editdlrm
bond_alb.h62510644editdlrm
bond_options.h39160644editdlrm
bpf_sk_storage.h18020644editdlrm
busy_poll.h49730644editdlrm
calipso.h21990644editdlrm
cfg80211-wext.h19000644editdlrm
cfg80211.h3258440644editdlrm
cfg802154.h111750644editdlrm
checksum.h48500644editdlrm
cipso_ipv4.h83990644editdlrm
cls_cgroup.h23010644editdlrm
codel.h60000644editdlrm
codel_impl.h85000644editdlrm
codel_qdisc.h30010644editdlrm
compat.h17110644editdlrm
datalink.h6190644editdlrm
dcbevent.h12930644editdlrm
dcbnl.h52670644editdlrm
devlink.h647110644editdlrm
dn.h70460644editdlrm
dn_dev.h54880644editdlrm
dn_fib.h40770644editdlrm
dn_neigh.h9680644editdlrm
dn_nsp.h59660644editdlrm
dn_route.h45000644editdlrm
dropreason-core.h120630644editdlrm
drop_monitor.h9010644editdlrm
dsa.h166050644editdlrm
dsfield.h11390644editdlrm
dst.h148700644editdlrm
dst_cache.h25960644editdlrm
dst_metadata.h55210644editdlrm
dst_ops.h25640644editdlrm
erspan.h85270644editdlrm
esp.h11900644editdlrm
espintcp.h9660644editdlrm
ethoc.h5370644editdlrm
failover.h11780644editdlrm
fib_notifier.h14760644editdlrm
fib_rules.h57280644editdlrm
firewire.h6360644editdlrm
flow.h63530644editdlrm
flow_dissector.h112840644editdlrm
flow_offload.h177970644editdlrm
fou.h5490644editdlrm
fq.h24970644editdlrm
fq_impl.h81440644editdlrm
garp.h26780644editdlrm
genetlink.h146470644editdlrm
geneve.h18980644editdlrm
gen_stats.h30340644editdlrm
gre.h33770644editdlrm
gro_cells.h4430644editdlrm
gtp.h6330644editdlrm
gue.h33110644editdlrm
hwbm.h9370644editdlrm
icmp.h17650644editdlrm
ieee80211_radiotap.h230170644editdlrm
ieee802154_netdev.h93580644editdlrm
ife.h10570644editdlrm
if_inet6.h65910644editdlrm
ila.h4980644editdlrm
inet6_connection_sock.h9760644editdlrm
inet6_hashtables.h37460644editdlrm
inetpeer.h33720644editdlrm
inet_common.h26140644editdlrm
inet_connection_sock.h120700644editdlrm
inet_ecn.h80710644editdlrm
inet_frag.h48160644editdlrm
inet_hashtables.h138470644editdlrm
inet_sock.h98280644editdlrm
inet_timewait_sock.h39260644editdlrm
ip.h213540644editdlrm
ip6_checksum.h29810644editdlrm
ip6_fib.h137660644editdlrm
ip6_route.h92280644editdlrm
ip6_tunnel.h50960644editdlrm
ipcomp.h6590644editdlrm
ipconfig.h8110644editdlrm
ipv6.h327410644editdlrm
ipv6_frag.h33210644editdlrm
ipv6_stubs.h26710644editdlrm
ipx.h43860644editdlrm
ip_fib.h142900644editdlrm
ip_tunnels.h146970644editdlrm
ip_vs.h494070644editdlrm
iw_handler.h214130644editdlrm
kcm.h50830644editdlrm
l3mdev.h67430644editdlrm
lag.h4090644editdlrm
lapb.h48690644editdlrm
lib80211.h40170644editdlrm
llc.h44640644editdlrm
llc_conn.h41550644editdlrm
llc_c_ac.h95370644editdlrm
llc_c_ev.h109400644editdlrm
llc_c_st.h17620644editdlrm
llc_if.h22100644editdlrm
llc_pdu.h147830644editdlrm
llc_sap.h11080644editdlrm
llc_s_ac.h15910644editdlrm
llc_s_ev.h22550644editdlrm
llc_s_st.h9470644editdlrm
lwtunnel.h65630644editdlrm
mac80211.h2944370644editdlrm
mac802154.h156330644editdlrm
mip6.h16170644editdlrm
mld.h28700644editdlrm
mpls.h13400644editdlrm
mpls_iptunnel.h8270644editdlrm
mptcp.h62420644editdlrm
mrp.h31030644editdlrm
ncsi.h19640644editdlrm
ndisc.h150950644editdlrm
neighbour.h162890644editdlrm
netdev_queues.h56090644editdlrm
netevent.h10440644editdlrm
netlabel.h212360644editdlrm
netlink.h632530644editdlrm
netprio_cgroup.h12600644editdlrm
netrom.h78960644editdlrm
net_failover.h10230644editdlrm
net_namespace.h141770644editdlrm
net_ratelimit.h2200644editdlrm
nexthop.h8650644editdlrm
nl802154.h123850644editdlrm
nsh.h126020644editdlrm
p8022.h4470644editdlrm
page_pool.h69850644editdlrm
pie.h36840644editdlrm
ping.h31970644editdlrm
pkt_cls.h261780644editdlrm
pkt_sched.h65430644editdlrm
pptp.h5570644editdlrm
protocol.h43200644editdlrm
psample.h10830644editdlrm
psnap.h3510644editdlrm
raw.h21610644editdlrm
rawv6.h8560644editdlrm
red.h116000644editdlrm
regulatory.h109610644editdlrm
request_sock.h68710644editdlrm
rose.h78020644editdlrm
route.h113900644editdlrm
rsi_91x.h17100644editdlrm
rtnetlink.h73170644editdlrm
sch_generic.h338410644editdlrm
scm.h36710644editdlrm
secure_seq.h8550644editdlrm
seg6.h18740644editdlrm
seg6_hmac.h16990644editdlrm
seg6_local.h8700644editdlrm
slhc_vj.h68310644editdlrm
smc.h21550644editdlrm
snmp.h54820644editdlrm
sock.h791820644editdlrm
sock_reuseport.h15650644editdlrm
Space.h10940644editdlrm
stp.h3830644editdlrm
strparser.h43400644editdlrm
switchdev.h178120644editdlrm
tcp.h732060644editdlrm
tcp_states.h15400644editdlrm
tc_wrapper.h70330644editdlrm
timewait_sock.h11360644editdlrm
tipc.h24050644editdlrm
tls.h213630644editdlrm
tls_toe.h30060644editdlrm
transp_v6.h19960644editdlrm
tso.h5150644editdlrm
tun_proto.h9880644editdlrm
udp.h164810644editdlrm
udplite.h37620644editdlrm
udp_tunnel.h133760644editdlrm
vsock_addr.h6620644editdlrm
vxlan.h135410644editdlrm
wext.h15100644editdlrm
wimax.h204450644editdlrm
x25.h96580644editdlrm
x25device.h3870644editdlrm
xdp.h94360644editdlrm
xdp_priv.h4460644editdlrm
xdp_sock.h20940644editdlrm
xdp_sock_drv.h64230644editdlrm
xfrm.h596280644editdlrm
xsk_buff_pool.h65500644editdlrm
Edit: /usr/src/kernels/4.18.0-553.157.1.el8_10.x86_64/include/net/l3mdev.h (6743B)
/* * include/net/l3mdev.h - L3 master device API * Copyright (c) 2015 Cumulus Networks * Copyright (c) 2015 David Ahern * * 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. */ #ifndef _NET_L3MDEV_H_ #define _NET_L3MDEV_H_ #include #include #include struct l3mdev_ops_extended_rh { }; /** * struct l3mdev_ops - l3mdev operations * * @l3mdev_fib_table: Get FIB table id to use for lookups * * @l3mdev_l3_rcv: Hook in L3 receive path * * @l3mdev_l3_out: Hook in L3 output path * * @l3mdev_link_scope_lookup: IPv6 lookup for linklocal and mcast destinations */ struct l3mdev_ops { u32 (*l3mdev_fib_table)(const struct net_device *dev); struct sk_buff * (*l3mdev_l3_rcv)(struct net_device *dev, struct sk_buff *skb, u16 proto); struct sk_buff * (*l3mdev_l3_out)(struct net_device *dev, struct sock *sk, struct sk_buff *skb, u16 proto); /* IPv6 ops */ struct dst_entry * (*l3mdev_link_scope_lookup)(const struct net_device *dev, struct flowi6 *fl6); RH_KABI_RESERVE(1) RH_KABI_RESERVE(2) RH_KABI_RESERVE(3) RH_KABI_RESERVE(4) RH_KABI_RESERVE(5) RH_KABI_RESERVE(6) RH_KABI_RESERVE(7) RH_KABI_AUX_EMBED(l3mdev_ops_extended) }; #ifdef CONFIG_NET_L3_MASTER_DEV int l3mdev_fib_rule_match(struct net *net, struct flowi *fl, struct fib_lookup_arg *arg); void l3mdev_update_flow(struct net *net, struct flowi *fl); int l3mdev_master_ifindex_rcu(const struct net_device *dev); static inline int l3mdev_master_ifindex(struct net_device *dev) { int ifindex; rcu_read_lock(); ifindex = l3mdev_master_ifindex_rcu(dev); rcu_read_unlock(); return ifindex; } static inline int l3mdev_master_ifindex_by_index(struct net *net, int ifindex) { struct net_device *dev; int rc = 0; if (likely(ifindex)) { rcu_read_lock(); dev = dev_get_by_index_rcu(net, ifindex); if (dev) rc = l3mdev_master_ifindex_rcu(dev); rcu_read_unlock(); } return rc; } static inline struct net_device *l3mdev_master_dev_rcu(const struct net_device *_dev) { /* netdev_master_upper_dev_get_rcu calls * list_first_or_null_rcu to walk the upper dev list. * list_first_or_null_rcu does not handle a const arg. We aren't * making changes, just want the master device from that list so * typecast to remove the const */ struct net_device *dev = (struct net_device *)_dev; struct net_device *master; if (!dev) return NULL; if (netif_is_l3_master(dev)) master = dev; else if (netif_is_l3_slave(dev)) master = netdev_master_upper_dev_get_rcu(dev); else master = NULL; return master; } int l3mdev_master_upper_ifindex_by_index_rcu(struct net *net, int ifindex); static inline int l3mdev_master_upper_ifindex_by_index(struct net *net, int ifindex) { rcu_read_lock(); ifindex = l3mdev_master_upper_ifindex_by_index_rcu(net, ifindex); rcu_read_unlock(); return ifindex; } u32 l3mdev_fib_table_rcu(const struct net_device *dev); u32 l3mdev_fib_table_by_index(struct net *net, int ifindex); static inline u32 l3mdev_fib_table(const struct net_device *dev) { u32 tb_id; rcu_read_lock(); tb_id = l3mdev_fib_table_rcu(dev); rcu_read_unlock(); return tb_id; } static inline bool netif_index_is_l3_master(struct net *net, int ifindex) { struct net_device *dev; bool rc = false; if (ifindex == 0) return false; rcu_read_lock(); dev = dev_get_by_index_rcu(net, ifindex); if (dev) rc = netif_is_l3_master(dev); rcu_read_unlock(); return rc; } struct dst_entry *l3mdev_link_scope_lookup(struct net *net, struct flowi6 *fl6); static inline struct sk_buff *l3mdev_l3_rcv(struct sk_buff *skb, u16 proto) { struct net_device *master = NULL; if (netif_is_l3_slave(skb->dev)) master = netdev_master_upper_dev_get_rcu(skb->dev); else if (netif_is_l3_master(skb->dev) || netif_has_l3_rx_handler(skb->dev)) master = skb->dev; if (master && master->l3mdev_ops->l3mdev_l3_rcv) skb = master->l3mdev_ops->l3mdev_l3_rcv(master, skb, proto); return skb; } static inline struct sk_buff *l3mdev_ip_rcv(struct sk_buff *skb) { return l3mdev_l3_rcv(skb, AF_INET); } static inline struct sk_buff *l3mdev_ip6_rcv(struct sk_buff *skb) { return l3mdev_l3_rcv(skb, AF_INET6); } static inline struct sk_buff *l3mdev_l3_out(struct sock *sk, struct sk_buff *skb, u16 proto) { struct net_device *dev = skb_dst(skb)->dev; if (netif_is_l3_slave(dev)) { struct net_device *master; master = netdev_master_upper_dev_get_rcu(dev); if (master && master->l3mdev_ops->l3mdev_l3_out) skb = master->l3mdev_ops->l3mdev_l3_out(master, sk, skb, proto); } return skb; } static inline struct sk_buff *l3mdev_ip_out(struct sock *sk, struct sk_buff *skb) { return l3mdev_l3_out(sk, skb, AF_INET); } static inline struct sk_buff *l3mdev_ip6_out(struct sock *sk, struct sk_buff *skb) { return l3mdev_l3_out(sk, skb, AF_INET6); } #else static inline int l3mdev_master_ifindex_rcu(const struct net_device *dev) { return 0; } static inline int l3mdev_master_ifindex(struct net_device *dev) { return 0; } static inline int l3mdev_master_ifindex_by_index(struct net *net, int ifindex) { return 0; } static inline int l3mdev_master_upper_ifindex_by_index_rcu(struct net *net, int ifindex) { return 0; } static inline int l3mdev_master_upper_ifindex_by_index(struct net *net, int ifindex) { return 0; } static inline struct net_device *l3mdev_master_dev_rcu(const struct net_device *dev) { return NULL; } static inline u32 l3mdev_fib_table_rcu(const struct net_device *dev) { return 0; } static inline u32 l3mdev_fib_table(const struct net_device *dev) { return 0; } static inline u32 l3mdev_fib_table_by_index(struct net *net, int ifindex) { return 0; } static inline bool netif_index_is_l3_master(struct net *net, int ifindex) { return false; } static inline struct dst_entry *l3mdev_link_scope_lookup(struct net *net, struct flowi6 *fl6) { return NULL; } static inline struct sk_buff *l3mdev_ip_rcv(struct sk_buff *skb) { return skb; } static inline struct sk_buff *l3mdev_ip6_rcv(struct sk_buff *skb) { return skb; } static inline struct sk_buff *l3mdev_ip_out(struct sock *sk, struct sk_buff *skb) { return skb; } static inline struct sk_buff *l3mdev_ip6_out(struct sock *sk, struct sk_buff *skb) { return skb; } static inline int l3mdev_fib_rule_match(struct net *net, struct flowi *fl, struct fib_lookup_arg *arg) { return 1; } static inline void l3mdev_update_flow(struct net *net, struct flowi *fl) { } #endif #endif /* _NET_L3MDEV_H_ */