]> git.ipfire.org Git - thirdparty/systemd.git/commitdiff
basic/linux: add more bridge headers
authorYu Watanabe <watanabe.yu+github@gmail.com>
Wed, 25 Aug 2021 07:52:32 +0000 (16:52 +0900)
committerYu Watanabe <watanabe.yu+github@gmail.com>
Tue, 31 Aug 2021 12:12:20 +0000 (21:12 +0900)
src/basic/linux/cfm_bridge.h [new file with mode: 0644]
src/basic/linux/mrp_bridge.h [new file with mode: 0644]
src/basic/meson.build

diff --git a/src/basic/linux/cfm_bridge.h b/src/basic/linux/cfm_bridge.h
new file mode 100644 (file)
index 0000000..3c1cbd1
--- /dev/null
@@ -0,0 +1,64 @@
+/* SPDX-License-Identifier: GPL-2.0+ WITH Linux-syscall-note */
+
+#ifndef _UAPI_LINUX_CFM_BRIDGE_H_
+#define _UAPI_LINUX_CFM_BRIDGE_H_
+
+#include <linux/types.h>
+#include <linux/if_ether.h>
+
+#define ETHER_HEADER_LENGTH            (6+6+4+2)
+#define CFM_MAID_LENGTH                        48
+#define CFM_CCM_PDU_LENGTH             75
+#define CFM_PORT_STATUS_TLV_LENGTH     4
+#define CFM_IF_STATUS_TLV_LENGTH       4
+#define CFM_IF_STATUS_TLV_TYPE         4
+#define CFM_PORT_STATUS_TLV_TYPE       2
+#define CFM_ENDE_TLV_TYPE              0
+#define CFM_CCM_MAX_FRAME_LENGTH       (ETHER_HEADER_LENGTH+\
+                                        CFM_CCM_PDU_LENGTH+\
+                                        CFM_PORT_STATUS_TLV_LENGTH+\
+                                        CFM_IF_STATUS_TLV_LENGTH)
+#define CFM_FRAME_PRIO                 7
+#define CFM_CCM_TLV_OFFSET             70
+#define CFM_CCM_PDU_MAID_OFFSET                10
+#define CFM_CCM_PDU_MEPID_OFFSET       8
+#define CFM_CCM_PDU_SEQNR_OFFSET       4
+#define CFM_CCM_PDU_TLV_OFFSET         74
+#define CFM_CCM_ITU_RESERVED_SIZE      16
+
+struct br_cfm_common_hdr {
+       __u8 mdlevel_version;
+       __u8 opcode;
+       __u8 flags;
+       __u8 tlv_offset;
+};
+
+enum br_cfm_opcodes {
+       BR_CFM_OPCODE_CCM = 0x1,
+};
+
+/* MEP domain */
+enum br_cfm_domain {
+       BR_CFM_PORT,
+       BR_CFM_VLAN,
+};
+
+/* MEP direction */
+enum br_cfm_mep_direction {
+       BR_CFM_MEP_DIRECTION_DOWN,
+       BR_CFM_MEP_DIRECTION_UP,
+};
+
+/* CCM interval supported. */
+enum br_cfm_ccm_interval {
+       BR_CFM_CCM_INTERVAL_NONE,
+       BR_CFM_CCM_INTERVAL_3_3_MS,
+       BR_CFM_CCM_INTERVAL_10_MS,
+       BR_CFM_CCM_INTERVAL_100_MS,
+       BR_CFM_CCM_INTERVAL_1_SEC,
+       BR_CFM_CCM_INTERVAL_10_SEC,
+       BR_CFM_CCM_INTERVAL_1_MIN,
+       BR_CFM_CCM_INTERVAL_10_MIN,
+};
+
+#endif
diff --git a/src/basic/linux/mrp_bridge.h b/src/basic/linux/mrp_bridge.h
new file mode 100644 (file)
index 0000000..bd4424d
--- /dev/null
@@ -0,0 +1,74 @@
+/* SPDX-License-Identifier: GPL-2.0+ WITH Linux-syscall-note */
+
+#ifndef _UAPI_LINUX_MRP_BRIDGE_H_
+#define _UAPI_LINUX_MRP_BRIDGE_H_
+
+#include <linux/types.h>
+#include <linux/if_ether.h>
+
+#define MRP_MAX_FRAME_LENGTH           200
+#define MRP_DEFAULT_PRIO               0x8000
+#define MRP_DOMAIN_UUID_LENGTH         16
+#define MRP_VERSION                    1
+#define MRP_FRAME_PRIO                 7
+#define MRP_OUI_LENGTH                 3
+#define MRP_MANUFACTURE_DATA_LENGTH    2
+
+enum br_mrp_ring_role_type {
+       BR_MRP_RING_ROLE_DISABLED,
+       BR_MRP_RING_ROLE_MRC,
+       BR_MRP_RING_ROLE_MRM,
+       BR_MRP_RING_ROLE_MRA,
+};
+
+enum br_mrp_in_role_type {
+       BR_MRP_IN_ROLE_DISABLED,
+       BR_MRP_IN_ROLE_MIC,
+       BR_MRP_IN_ROLE_MIM,
+};
+
+enum br_mrp_ring_state_type {
+       BR_MRP_RING_STATE_OPEN,
+       BR_MRP_RING_STATE_CLOSED,
+};
+
+enum br_mrp_in_state_type {
+       BR_MRP_IN_STATE_OPEN,
+       BR_MRP_IN_STATE_CLOSED,
+};
+
+enum br_mrp_port_state_type {
+       BR_MRP_PORT_STATE_DISABLED,
+       BR_MRP_PORT_STATE_BLOCKED,
+       BR_MRP_PORT_STATE_FORWARDING,
+       BR_MRP_PORT_STATE_NOT_CONNECTED,
+};
+
+enum br_mrp_port_role_type {
+       BR_MRP_PORT_ROLE_PRIMARY,
+       BR_MRP_PORT_ROLE_SECONDARY,
+       BR_MRP_PORT_ROLE_INTER,
+};
+
+enum br_mrp_tlv_header_type {
+       BR_MRP_TLV_HEADER_END = 0x0,
+       BR_MRP_TLV_HEADER_COMMON = 0x1,
+       BR_MRP_TLV_HEADER_RING_TEST = 0x2,
+       BR_MRP_TLV_HEADER_RING_TOPO = 0x3,
+       BR_MRP_TLV_HEADER_RING_LINK_DOWN = 0x4,
+       BR_MRP_TLV_HEADER_RING_LINK_UP = 0x5,
+       BR_MRP_TLV_HEADER_IN_TEST = 0x6,
+       BR_MRP_TLV_HEADER_IN_TOPO = 0x7,
+       BR_MRP_TLV_HEADER_IN_LINK_DOWN = 0x8,
+       BR_MRP_TLV_HEADER_IN_LINK_UP = 0x9,
+       BR_MRP_TLV_HEADER_IN_LINK_STATUS = 0xa,
+       BR_MRP_TLV_HEADER_OPTION = 0x7f,
+};
+
+enum br_mrp_sub_tlv_header_type {
+       BR_MRP_SUB_TLV_HEADER_TEST_MGR_NACK = 0x1,
+       BR_MRP_SUB_TLV_HEADER_TEST_PROPAGATE = 0x2,
+       BR_MRP_SUB_TLV_HEADER_TEST_AUTO_MGR = 0x3,
+};
+
+#endif
index 6d755ab6465f75b6fc0e3557672c3748433e359d..b10c4508acb2bd1dc9352098a776340171dd81f5 100644 (file)
@@ -81,6 +81,7 @@ basic_sources = files('''
         linux/btrfs_tree.h
         linux/can/netlink.h
         linux/can/vxcan.h
+        linux/cfm_bridge.h
         linux/fib_rules.h
         linux/fou.h
         linux/genetlink.h
@@ -101,6 +102,7 @@ basic_sources = files('''
         linux/l2tp.h
         linux/libc-compat.h
         linux/loadavg.h
+        linux/mrp_bridge.h
         linux/netdevice.h
         linux/netfilter/nf_tables.h
         linux/netfilter/nfnetlink.h