0001
0002
0003 #ifndef _UAPI_LINUX_CFM_BRIDGE_H_
0004 #define _UAPI_LINUX_CFM_BRIDGE_H_
0005
0006 #include <linux/types.h>
0007 #include <linux/if_ether.h>
0008
0009 #define ETHER_HEADER_LENGTH (6+6+4+2)
0010 #define CFM_MAID_LENGTH 48
0011 #define CFM_CCM_PDU_LENGTH 75
0012 #define CFM_PORT_STATUS_TLV_LENGTH 4
0013 #define CFM_IF_STATUS_TLV_LENGTH 4
0014 #define CFM_IF_STATUS_TLV_TYPE 4
0015 #define CFM_PORT_STATUS_TLV_TYPE 2
0016 #define CFM_ENDE_TLV_TYPE 0
0017 #define CFM_CCM_MAX_FRAME_LENGTH (ETHER_HEADER_LENGTH+\
0018 CFM_CCM_PDU_LENGTH+\
0019 CFM_PORT_STATUS_TLV_LENGTH+\
0020 CFM_IF_STATUS_TLV_LENGTH)
0021 #define CFM_FRAME_PRIO 7
0022 #define CFM_CCM_TLV_OFFSET 70
0023 #define CFM_CCM_PDU_MAID_OFFSET 10
0024 #define CFM_CCM_PDU_MEPID_OFFSET 8
0025 #define CFM_CCM_PDU_SEQNR_OFFSET 4
0026 #define CFM_CCM_PDU_TLV_OFFSET 74
0027 #define CFM_CCM_ITU_RESERVED_SIZE 16
0028
0029 struct br_cfm_common_hdr {
0030 __u8 mdlevel_version;
0031 __u8 opcode;
0032 __u8 flags;
0033 __u8 tlv_offset;
0034 };
0035
0036 enum br_cfm_opcodes {
0037 BR_CFM_OPCODE_CCM = 0x1,
0038 };
0039
0040
0041 enum br_cfm_domain {
0042 BR_CFM_PORT,
0043 BR_CFM_VLAN,
0044 };
0045
0046
0047 enum br_cfm_mep_direction {
0048 BR_CFM_MEP_DIRECTION_DOWN,
0049 BR_CFM_MEP_DIRECTION_UP,
0050 };
0051
0052
0053 enum br_cfm_ccm_interval {
0054 BR_CFM_CCM_INTERVAL_NONE,
0055 BR_CFM_CCM_INTERVAL_3_3_MS,
0056 BR_CFM_CCM_INTERVAL_10_MS,
0057 BR_CFM_CCM_INTERVAL_100_MS,
0058 BR_CFM_CCM_INTERVAL_1_SEC,
0059 BR_CFM_CCM_INTERVAL_10_SEC,
0060 BR_CFM_CCM_INTERVAL_1_MIN,
0061 BR_CFM_CCM_INTERVAL_10_MIN,
0062 };
0063
0064 #endif