History

bpf: sync tools bpf.h uapi header

Sync the header from include/uapi/linux/bpf.h which was updated to add fib lookup helper function. This fixes selftests/bpf build failure.

Prashant Bhole committed 8 years ago

Commit cb9c28e1 parent 91bc07c1 file · +81 −1Browse files

Showing the changes to tools/include/uapi/linux (1 of 1 file). Show all

Unified · Split

tools/include/uapi/linux/bpf.h+81−1
@@ -117,6 +117,7 @@ enum bpf_map_type { · 116 unmodified lines
117 BPF_MAP_TYPE_DEVMAP,117 BPF_MAP_TYPE_DEVMAP,
118 BPF_MAP_TYPE_SOCKMAP,118 BPF_MAP_TYPE_SOCKMAP,
119 BPF_MAP_TYPE_CPUMAP,119 BPF_MAP_TYPE_CPUMAP,
120 BPF_MAP_TYPE_XSKMAP,
120};121};
121 122
122enum bpf_prog_type {123enum bpf_prog_type {
@@ -1827,6 +1828,33 @@ union bpf_attr { · 1704 unmodified lines
1827 * Return1828 * Return
1828 * 0 on success, or a negative error in case of failure.1829 * 0 on success, or a negative error in case of failure.
1829 *1830 *
1831 *
1832 * int bpf_fib_lookup(void *ctx, struct bpf_fib_lookup *params, int plen, u32 flags)
1833 * Description
1834 * Do FIB lookup in kernel tables using parameters in *params*.
1835 * If lookup is successful and result shows packet is to be
1836 * forwarded, the neighbor tables are searched for the nexthop.
1837 * If successful (ie., FIB lookup shows forwarding and nexthop
1838 * is resolved), the nexthop address is returned in ipv4_dst,
1839 * ipv6_dst or mpls_out based on family, smac is set to mac
1840 * address of egress device, dmac is set to nexthop mac address,
1841 * rt_metric is set to metric from route.
1842 *
1843 * *plen* argument is the size of the passed in struct.
1844 * *flags* argument can be one or more BPF_FIB_LOOKUP_ flags:
1845 *
1846 * **BPF_FIB_LOOKUP_DIRECT** means do a direct table lookup vs
1847 * full lookup using FIB rules
1848 * **BPF_FIB_LOOKUP_OUTPUT** means do lookup from an egress
1849 * perspective (default is ingress)
1850 *
1851 * *ctx* is either **struct xdp_md** for XDP programs or
1852 * **struct sk_buff** tc cls_act programs.
1853 *
1854 * Return
1855 * Egress device index on success, 0 if packet needs to continue
1856 * up the stack for further processing or a negative error in case
1857 * of failure.
1830 */1858 */
1831#define __BPF_FUNC_MAPPER(FN) \1859#define __BPF_FUNC_MAPPER(FN) \
1832 FN(unspec), \1860 FN(unspec), \
@@ -1897,7 +1925,8 @@ union bpf_attr { · 64 unmodified lines
1897 FN(xdp_adjust_tail), \1925 FN(xdp_adjust_tail), \
1898 FN(skb_get_xfrm_state), \1926 FN(skb_get_xfrm_state), \
1899 FN(get_stack), \1927 FN(get_stack), \
1900 FN(skb_load_bytes_relative),1928 FN(skb_load_bytes_relative), \
1929 FN(fib_lookup),
1901 1930
1902/* integer value in 'imm' field of BPF_CALL instruction selects which helper1931/* integer value in 'imm' field of BPF_CALL instruction selects which helper
1903 * function eBPF program intends to call1932 * function eBPF program intends to call
@@ -2320,4 +2349,55 @@ struct bpf_raw_tracepoint_args { · 416 unmodified lines
2320 __u64 args[0];2349 __u64 args[0];
2321};2350};
2322 2351
2352/* DIRECT: Skip the FIB rules and go to FIB table associated with device
2353 * OUTPUT: Do lookup from egress perspective; default is ingress
2354 */
2355#define BPF_FIB_LOOKUP_DIRECT BIT(0)
2356#define BPF_FIB_LOOKUP_OUTPUT BIT(1)
2357
2358struct bpf_fib_lookup {
2359 /* input */
2360 __u8 family; /* network family, AF_INET, AF_INET6, AF_MPLS */
2361
2362 /* set if lookup is to consider L4 data - e.g., FIB rules */
2363 __u8 l4_protocol;
2364 __be16 sport;
2365 __be16 dport;
2366
2367 /* total length of packet from network header - used for MTU check */
2368 __u16 tot_len;
2369 __u32 ifindex; /* L3 device index for lookup */
2370
2371 union {
2372 /* inputs to lookup */
2373 __u8 tos; /* AF_INET */
2374 __be32 flowlabel; /* AF_INET6 */
2375
2376 /* output: metric of fib result */
2377 __u32 rt_metric;
2378 };
2379
2380 union {
2381 __be32 mpls_in;
2382 __be32 ipv4_src;
2383 __u32 ipv6_src[4]; /* in6_addr; network order */
2384 };
2385
2386 /* input to bpf_fib_lookup, *dst is destination address.
2387 * output: bpf_fib_lookup sets to gateway address
2388 */
2389 union {
2390 /* return for MPLS lookups */
2391 __be32 mpls_out[4]; /* support up to 4 labels */
2392 __be32 ipv4_dst;
2393 __u32 ipv6_dst[4]; /* in6_addr; network order */
2394 };
2395
2396 /* output */
2397 __be16 h_vlan_proto;
2398 __be16 h_vlan_TCI;
2399 __u8 smac[6]; /* ETH_ALEN */
2400 __u8 dmac[6]; /* ETH_ALEN */
2401};
2402
2323#endif /* _UAPI__LINUX_BPF_H__ */2403#endif /* _UAPI__LINUX_BPF_H__ */

Keyboard shortcuts

General

Show keyboard shortcuts
?
Focus the current search
/

Issues and pull requests

Open filters
f

Issues, pull requests and Inbox

Select next item
j↓
Select previous item
k↑
Open selected item
Enter
Dismiss filters or clear selection
Esc

Repository code

Go to file
t