-
Notifications
You must be signed in to change notification settings - Fork 3
Open
Description
now ldind(size) and ldabs(size) are implemented as the the same memory as input. Actually, they are different.
- These instructions can only be used when interpreter context is a pointer to 'struct sk_buff' and have seven implicit operands. Register R6 is an implicit input that must contain pointer to sk_buff. Register R0 is an implicit output which contains the data fetched from the packet. Registers R1-R5 are scratch registers and must not be used to store the data across BPF_ABS | BPF_LD or BPF_IND | BPF_LD instructions.(https://www.kernel.org/doc/Documentation/networking/filter.txt)
- the relationship between input __skb_buff and pkt(ldind, ldabs):
struct __sk_buff {
__u32 len;
__u32 pkt_type;
__u32 mark;
__u32 queue_mapping;
__u32 protocol;
__u32 vlan_present;
__u32 vlan_tci;
__u32 vlan_proto;
__u32 priority;
__u32 ingress_ifindex;
__u32 ifindex;
__u32 tc_index;
__u32 cb[5];
__u32 hash;
__u32 tc_classid;
__u32 data; // pkt start
__u32 data_end; // pkt end
...
Metadata
Metadata
Assignees
Labels
No labels