xref: /aosp_15_r20/external/libnl/include/netlink/route/cls/flower.h (revision 4dc78e53d49367fa8e61b07018507c90983a077d)
1 /* SPDX-License-Identifier: LGPL-2.1-only */
2 /*
3  * Copyright (c) 2018 Volodymyr Bendiuga <[email protected]>
4  */
5 
6 #ifndef NETLINK_FLOWER_H_
7 #define NETLINK_FLOWER_H_
8 
9 #include <netlink/netlink.h>
10 #include <netlink/cache.h>
11 #include <netlink/route/classifier.h>
12 #include <netlink/route/action.h>
13 
14 #ifdef __cplusplus
15 extern "C" {
16 #endif
17 
18 extern int rtnl_flower_set_proto(struct rtnl_cls *cls, uint16_t);
19 extern int rtnl_flower_get_proto(struct rtnl_cls *cls, uint16_t *);
20 
21 extern int rtnl_flower_set_vlan_id(struct rtnl_cls *, uint16_t);
22 extern int rtnl_flower_get_vlan_id(struct rtnl_cls *, uint16_t *);
23 
24 extern int rtnl_flower_set_vlan_prio(struct rtnl_cls *, uint8_t);
25 extern int rtnl_flower_get_vlan_prio(struct rtnl_cls *, uint8_t *);
26 
27 extern int rtnl_flower_set_vlan_ethtype(struct rtnl_cls *, uint16_t);
28 
29 extern int rtnl_flower_set_dst_mac(struct rtnl_cls *, unsigned char *,
30                                    unsigned char *);
31 extern int rtnl_flower_get_dst_mac(struct rtnl_cls *, unsigned char *,
32                                    unsigned char *);
33 
34 extern int rtnl_flower_set_src_mac(struct rtnl_cls *, unsigned char *,
35                                    unsigned char *);
36 extern int rtnl_flower_get_src_mac(struct rtnl_cls *, unsigned char *,
37                                    unsigned char *);
38 
39 extern int rtnl_flower_set_ip_dscp(struct rtnl_cls *, uint8_t, uint8_t);
40 extern int rtnl_flower_get_ip_dscp(struct rtnl_cls *, uint8_t *, uint8_t *);
41 
42 extern int rtnl_flower_set_ipv4_src(struct rtnl_cls *, in_addr_t, in_addr_t);
43 extern int rtnl_flower_get_ipv4_src(struct rtnl_cls *, in_addr_t *,
44 				    in_addr_t *);
45 extern int rtnl_flower_set_ipv4_dst(struct rtnl_cls *, in_addr_t, in_addr_t);
46 extern int rtnl_flower_get_ipv4_dst(struct rtnl_cls *, in_addr_t *,
47 				    in_addr_t *);
48 
49 extern int rtnl_flower_set_flags(struct rtnl_cls *, int);
50 
51 extern int rtnl_flower_append_action(struct rtnl_cls *, struct rtnl_act *);
52 extern int rtnl_flower_del_action(struct rtnl_cls *, struct rtnl_act *);
53 extern struct rtnl_act* rtnl_flower_get_action(struct rtnl_cls *);
54 
55 #ifdef __cplusplus
56 }
57 #endif
58 
59 #endif
60