include/net/tc_act/tc_vlan.h
Source file repositories/reference/linux-study-clean/include/net/tc_act/tc_vlan.h
File Facts
- System
- Linux kernel
- Corpus path
include/net/tc_act/tc_vlan.h- Extension
.h- Size
- 1910 bytes
- Lines
- 84
- Domain
- Networking Core
- Bucket
- Sockets, Protocols, Packet Path, And Network Policy
- Inferred role
- Networking Core: implementation source
- Status
- source implementation candidate
Why This File Exists
Networking stack implementation surface: socket APIs, protocol dispatch, packet flow, routing, filtering, and network namespaces.
- Networking stack implementation surface: socket APIs, protocol dispatch, packet flow, routing, filtering, and network namespaces.
- Uses kernel synchronization; read lock ordering, sleepability, and interrupt context assumptions before translating.
- Defines or uses C structs; map object ownership, embedded links, reference counts, and lock ownership.
Dependency Surface
net/act_api.hlinux/tc_act/tc_vlan.h
Detected Declarations
struct tcf_vlan_paramsstruct tcf_vlanfunction tcf_vlan_actionfunction tcf_vlan_push_vidfunction tcf_vlan_push_protofunction tcf_vlan_push_priofunction tcf_vlan_push_eth
Annotated Snippet
struct tcf_vlan_params {
int action;
int tcfv_action;
unsigned char tcfv_push_dst[ETH_ALEN];
unsigned char tcfv_push_src[ETH_ALEN];
u16 tcfv_push_vid;
__be16 tcfv_push_proto;
u8 tcfv_push_prio;
bool tcfv_push_prio_exists;
struct rcu_head rcu;
};
struct tcf_vlan {
struct tc_action common;
struct tcf_vlan_params __rcu *vlan_p;
};
#define to_vlan(a) ((struct tcf_vlan *)a)
static inline u32 tcf_vlan_action(const struct tc_action *a)
{
u32 tcfv_action;
rcu_read_lock();
tcfv_action = rcu_dereference(to_vlan(a)->vlan_p)->tcfv_action;
rcu_read_unlock();
return tcfv_action;
}
static inline u16 tcf_vlan_push_vid(const struct tc_action *a)
{
u16 tcfv_push_vid;
rcu_read_lock();
tcfv_push_vid = rcu_dereference(to_vlan(a)->vlan_p)->tcfv_push_vid;
rcu_read_unlock();
return tcfv_push_vid;
}
static inline __be16 tcf_vlan_push_proto(const struct tc_action *a)
{
__be16 tcfv_push_proto;
rcu_read_lock();
tcfv_push_proto = rcu_dereference(to_vlan(a)->vlan_p)->tcfv_push_proto;
rcu_read_unlock();
return tcfv_push_proto;
}
static inline u8 tcf_vlan_push_prio(const struct tc_action *a)
{
u8 tcfv_push_prio;
rcu_read_lock();
tcfv_push_prio = rcu_dereference(to_vlan(a)->vlan_p)->tcfv_push_prio;
rcu_read_unlock();
return tcfv_push_prio;
}
static inline void tcf_vlan_push_eth(unsigned char *src, unsigned char *dest,
const struct tc_action *a)
{
rcu_read_lock();
memcpy(dest, rcu_dereference(to_vlan(a)->vlan_p)->tcfv_push_dst, ETH_ALEN);
memcpy(src, rcu_dereference(to_vlan(a)->vlan_p)->tcfv_push_src, ETH_ALEN);
rcu_read_unlock();
}
#endif /* __NET_TC_VLAN_H */
Annotation
- Immediate include surface: `net/act_api.h`, `linux/tc_act/tc_vlan.h`.
- Detected declarations: `struct tcf_vlan_params`, `struct tcf_vlan`, `function tcf_vlan_action`, `function tcf_vlan_push_vid`, `function tcf_vlan_push_proto`, `function tcf_vlan_push_prio`, `function tcf_vlan_push_eth`.
- Atlas domain: Networking Core / Sockets, Protocols, Packet Path, And Network Policy.
- Implementation status: source implementation candidate.
- Synchronization appears in or near this file; preserve lock ordering, sleepability, and interrupt-context constraints.
Implementation Notes
- This generated page is the file-by-file coverage layer; curated subsystem chapters should link here when they synthesize a multi-file control flow.
- Core OS pages should be promoted from atlas-only to deep-reviewed when they explain data structures, invariants, locking, lifecycle, and C implementation snippets.
- Driver-family pages are intentionally pattern-oriented unless they are part of the selected PCIe/NVMe representative device path.