summaryrefslogtreecommitdiff
path: root/lib/pbr.h
diff options
context:
space:
mode:
Diffstat (limited to 'lib/pbr.h')
-rw-r--r--lib/pbr.h44
1 files changed, 30 insertions, 14 deletions
diff --git a/lib/pbr.h b/lib/pbr.h
index e8563afb3b..f4b6633812 100644
--- a/lib/pbr.h
+++ b/lib/pbr.h
@@ -1,6 +1,9 @@
// SPDX-License-Identifier: GPL-2.0-or-later
/* Policy Based Routing (PBR) main header
* Copyright (C) 2018 6WIND
+ * Portions:
+ * Copyright (c) 2021 The MITRE Corporation.
+ * Copyright (c) 2023 LabN Consulting, L.L.C.
*/
#ifndef _PBR_H
@@ -25,30 +28,43 @@ extern "C" {
* specified.
*/
struct pbr_filter {
- uint32_t filter_bm; /* not encoded by zapi
- */
-#define PBR_FILTER_SRC_IP (1 << 0)
-#define PBR_FILTER_DST_IP (1 << 1)
-#define PBR_FILTER_SRC_PORT (1 << 2)
-#define PBR_FILTER_DST_PORT (1 << 3)
-#define PBR_FILTER_FWMARK (1 << 4)
-#define PBR_FILTER_PROTO (1 << 5)
-#define PBR_FILTER_SRC_PORT_RANGE (1 << 6)
-#define PBR_FILTER_DST_PORT_RANGE (1 << 7)
-#define PBR_FILTER_DSFIELD (1 << 8)
-#define PBR_FILTER_IP_PROTOCOL (1 << 9)
+ uint32_t filter_bm;
+#define PBR_FILTER_SRC_IP (1 << 0)
+#define PBR_FILTER_DST_IP (1 << 1)
+#define PBR_FILTER_SRC_PORT (1 << 2)
+#define PBR_FILTER_DST_PORT (1 << 3)
+#define PBR_FILTER_FWMARK (1 << 4)
+#define PBR_FILTER_PROTO (1 << 5)
+#define PBR_FILTER_SRC_PORT_RANGE (1 << 6)
+#define PBR_FILTER_DST_PORT_RANGE (1 << 7)
+#define PBR_FILTER_DSFIELD (1 << 8)
+#define PBR_FILTER_IP_PROTOCOL (1 << 9)
+#define PBR_FILTER_PCP (1 << 10)
+#define PBR_FILTER_VLAN_FLAGS (1 << 11)
+#define PBR_FILTER_VLAN_ID (1 << 12)
#define PBR_DSFIELD_DSCP (0xfc) /* Upper 6 bits of DS field: DSCP */
#define PBR_DSFIELD_ECN (0x03) /* Lower 2 bits of DS field: BCN */
+#define PBR_PCP (0x07) /* 3-bit value 0..7 for prioritization*/
- /* Source and Destination IP address with masks. */
+#define PBR_VLAN_FLAGS_NO_WILD 0
+#define PBR_VLAN_FLAGS_TAGGED (1 << 0)
+#define PBR_VLAN_FLAGS_UNTAGGED (1 << 1)
+#define PBR_VLAN_FLAGS_UNTAGGED_0 (1 << 2)
+
+ /* Source and Destination IP address with masks */
struct prefix src_ip;
struct prefix dst_ip;
- /* Source and Destination higher-layer (TCP/UDP) port numbers. */
+ /* Source and Destination higher-layer (TCP/UDP) port numbers */
uint16_t src_port;
uint16_t dst_port;
+ /* Filter by VLAN and prioritization */
+ uint8_t pcp;
+ uint16_t vlan_id;
+ uint16_t vlan_flags;
+
/* Filter by Differentiated Services field */
uint8_t dsfield; /* DSCP (6 bits) & ECN (2 bits) */