include/net/tc_act/tc_skbedit.h
Source file repositories/reference/linux-study-clean/include/net/tc_act/tc_skbedit.h
File Facts
- System
- Linux kernel
- Corpus path
include/net/tc_act/tc_skbedit.h- Extension
.h- Size
- 3165 bytes
- Lines
- 141
- 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_skbedit.h
Detected Declarations
struct tcf_skbedit_paramsstruct tcf_skbeditfunction is_tcf_skbedit_with_flagfunction is_tcf_skbedit_markfunction tcf_skbedit_markfunction is_tcf_skbedit_ptypefunction tcf_skbedit_ptypefunction is_tcf_skbedit_priorityfunction tcf_skbedit_priorityfunction tcf_skbedit_rx_queue_mappingfunction is_tcf_skbedit_queue_mappingfunction is_tcf_skbedit_ingressfunction is_tcf_skbedit_tx_queue_mappingfunction is_tcf_skbedit_rx_queue_mappingfunction is_tcf_skbedit_inheritdsfield
Annotated Snippet
struct tcf_skbedit_params {
int action;
u32 flags;
u32 priority;
u32 mark;
u32 mask;
u16 queue_mapping;
u16 mapping_mod;
u16 ptype;
struct rcu_head rcu;
};
struct tcf_skbedit {
struct tc_action common;
struct tcf_skbedit_params __rcu *params;
};
#define to_skbedit(a) ((struct tcf_skbedit *)a)
/* Return true iff action is the one identified by FLAG. */
static inline bool is_tcf_skbedit_with_flag(const struct tc_action *a, u32 flag)
{
#ifdef CONFIG_NET_CLS_ACT
u32 flags;
if (a->ops && a->ops->id == TCA_ID_SKBEDIT) {
rcu_read_lock();
flags = rcu_dereference(to_skbedit(a)->params)->flags;
rcu_read_unlock();
return flags == flag;
}
#endif
return false;
}
/* Return true iff action is mark */
static inline bool is_tcf_skbedit_mark(const struct tc_action *a)
{
return is_tcf_skbedit_with_flag(a, SKBEDIT_F_MARK);
}
static inline u32 tcf_skbedit_mark(const struct tc_action *a)
{
u32 mark;
rcu_read_lock();
mark = rcu_dereference(to_skbedit(a)->params)->mark;
rcu_read_unlock();
return mark;
}
/* Return true iff action is ptype */
static inline bool is_tcf_skbedit_ptype(const struct tc_action *a)
{
return is_tcf_skbedit_with_flag(a, SKBEDIT_F_PTYPE);
}
static inline u32 tcf_skbedit_ptype(const struct tc_action *a)
{
u16 ptype;
rcu_read_lock();
ptype = rcu_dereference(to_skbedit(a)->params)->ptype;
rcu_read_unlock();
return ptype;
}
/* Return true iff action is priority */
static inline bool is_tcf_skbedit_priority(const struct tc_action *a)
{
return is_tcf_skbedit_with_flag(a, SKBEDIT_F_PRIORITY);
}
static inline u32 tcf_skbedit_priority(const struct tc_action *a)
{
u32 priority;
rcu_read_lock();
priority = rcu_dereference(to_skbedit(a)->params)->priority;
rcu_read_unlock();
return priority;
}
static inline u16 tcf_skbedit_rx_queue_mapping(const struct tc_action *a)
{
u16 rx_queue;
rcu_read_lock();
Annotation
- Immediate include surface: `net/act_api.h`, `linux/tc_act/tc_skbedit.h`.
- Detected declarations: `struct tcf_skbedit_params`, `struct tcf_skbedit`, `function is_tcf_skbedit_with_flag`, `function is_tcf_skbedit_mark`, `function tcf_skbedit_mark`, `function is_tcf_skbedit_ptype`, `function tcf_skbedit_ptype`, `function is_tcf_skbedit_priority`, `function tcf_skbedit_priority`, `function tcf_skbedit_rx_queue_mapping`.
- 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.