1 /* SPDX-License-Identifier: GPL-2.0+ WITH Linux-syscall-note */ 2 3 #ifndef _UAPI_LINUX_CFM_BRIDGE_H_ 4 #define _UAPI_LINUX_CFM_BRIDGE_H_ 5 6 #include <linux/types.h> 7 #include <linux/if_ether.h> 8 9 #define ETHER_HEADER_LENGTH (6+6+4+2) 10 #define CFM_MAID_LENGTH 48 11 #define CFM_CCM_PDU_LENGTH 75 12 #define CFM_PORT_STATUS_TLV_LENGTH 4 13 #define CFM_IF_STATUS_TLV_LENGTH 4 14 #define CFM_IF_STATUS_TLV_TYPE 4 15 #define CFM_PORT_STATUS_TLV_TYPE 2 16 #define CFM_ENDE_TLV_TYPE 0 17 #define CFM_CCM_MAX_FRAME_LENGTH (ETHER_HEADER_LENGTH+\ 18 CFM_CCM_PDU_LENGTH+\ 19 CFM_PORT_STATUS_TLV_LENGTH+\ 20 CFM_IF_STATUS_TLV_LENGTH) 21 #define CFM_FRAME_PRIO 7 22 #define CFM_CCM_TLV_OFFSET 70 23 #define CFM_CCM_PDU_MAID_OFFSET 10 24 #define CFM_CCM_PDU_MEPID_OFFSET 8 25 #define CFM_CCM_PDU_SEQNR_OFFSET 4 26 #define CFM_CCM_PDU_TLV_OFFSET 74 27 #define CFM_CCM_ITU_RESERVED_SIZE 16 28 29 struct br_cfm_common_hdr { 30 __u8 mdlevel_version; 31 __u8 opcode; 32 __u8 flags; 33 __u8 tlv_offset; 34 }; 35 36 enum br_cfm_opcodes { 37 BR_CFM_OPCODE_CCM = 0x1, 38 }; 39 40 /* MEP domain */ 41 enum br_cfm_domain { 42 BR_CFM_PORT, 43 BR_CFM_VLAN, 44 }; 45 46 /* MEP direction */ 47 enum br_cfm_mep_direction { 48 BR_CFM_MEP_DIRECTION_DOWN, 49 BR_CFM_MEP_DIRECTION_UP, 50 }; 51 52 /* CCM interval supported. */ 53 enum br_cfm_ccm_interval { 54 BR_CFM_CCM_INTERVAL_NONE, 55 BR_CFM_CCM_INTERVAL_3_3_MS, 56 BR_CFM_CCM_INTERVAL_10_MS, 57 BR_CFM_CCM_INTERVAL_100_MS, 58 BR_CFM_CCM_INTERVAL_1_SEC, 59 BR_CFM_CCM_INTERVAL_10_SEC, 60 BR_CFM_CCM_INTERVAL_1_MIN, 61 BR_CFM_CCM_INTERVAL_10_MIN, 62 }; 63 64 #endif 65