On Thu, 2020-10-01 at 10:30 +0000, Henrik Bjoernlund wrote: > This is the implementation of CFM netlink configuration > and status information interface. > > Add new nested netlink attributes. These attributes are used by the > user space to create/delete/configure CFM instances and get status. > Also they are used by the kernel to notify the user space when changes > in any status happens. > > SETLINK: > IFLA_BRIDGE_CFM: > Indicate that the following attributes are CFM. > > IFLA_BRIDGE_CFM_MEP_CREATE: > This indicate that a MEP instance must be created. > IFLA_BRIDGE_CFM_MEP_DELETE: > This indicate that a MEP instance must be deleted. > IFLA_BRIDGE_CFM_MEP_CONFIG: > This indicate that a MEP instance must be configured. > IFLA_BRIDGE_CFM_CC_CONFIG: > This indicate that a MEP instance Continuity Check (CC) > functionality must be configured. > IFLA_BRIDGE_CFM_CC_PEER_MEP_ADD: > This indicate that a CC Peer MEP must be added. > IFLA_BRIDGE_CFM_CC_PEER_MEP_REMOVE: > This indicate that a CC Peer MEP must be removed. > IFLA_BRIDGE_CFM_CC_CCM_TX: > This indicate that the CC transmitted CCM PDU must be configured. > IFLA_BRIDGE_CFM_CC_RDI: > This indicate that the CC transmitted CCM PDU RDI must be > configured. > > GETLINK: > Request filter RTEXT_FILTER_CFM_CONFIG: > Indicating that CFM configuration information must be delivered. > > IFLA_BRIDGE_CFM: > Points to the CFM information. > > IFLA_BRIDGE_CFM_MEP_CREATE_INFO: > This indicate that MEP instance create parameters are following. > IFLA_BRIDGE_CFM_MEP_CONFIG_INFO: > This indicate that MEP instance config parameters are following. > IFLA_BRIDGE_CFM_CC_CONFIG_INFO: > This indicate that MEP instance CC functionality > parameters are following. > IFLA_BRIDGE_CFM_CC_RDI_INFO: > This indicate that CC transmitted CCM PDU RDI > parameters are following. > IFLA_BRIDGE_CFM_CC_CCM_TX_INFO: > This indicate that CC transmitted CCM PDU parameters are > following. > IFLA_BRIDGE_CFM_CC_PEER_MEP_INFO: > This indicate that the added peer MEP IDs are following. > > Request filter RTEXT_FILTER_CFM_STATUS: > Indicating that CFM status information must be delivered. > > IFLA_BRIDGE_CFM: > Points to the CFM information. > > IFLA_BRIDGE_CFM_MEP_STATUS_INFO: > This indicate that the MEP instance status are following. > IFLA_BRIDGE_CFM_CC_PEER_STATUS_INFO: > This indicate that the peer MEP status are following. > > CFM nested attribute has the following attributes in next level. > > SETLINK and GETLINK RTEXT_FILTER_CFM_CONFIG: > IFLA_BRIDGE_CFM_MEP_CREATE_INSTANCE: > The created MEP instance number. > The type is u32. > IFLA_BRIDGE_CFM_MEP_CREATE_DOMAIN: > The created MEP domain. > The type is u32 (br_cfm_domain). > It must be BR_CFM_PORT. > This means that CFM frames are transmitted and received > directly on the port - untagged. Not in a VLAN. > IFLA_BRIDGE_CFM_MEP_CREATE_DIRECTION: > The created MEP direction. > The type is u32 (br_cfm_mep_direction). > It must be BR_CFM_MEP_DIRECTION_DOWN. > This means that CFM frames are transmitted and received on > the port. Not in the bridge. > IFLA_BRIDGE_CFM_MEP_CREATE_IFINDEX: > The created MEP residence port ifindex. > The type is u32 (ifindex). > > IFLA_BRIDGE_CFM_MEP_DELETE_INSTANCE: > The deleted MEP instance number. > The type is u32. > > IFLA_BRIDGE_CFM_MEP_CONFIG_INSTANCE: > The configured MEP instance number. > The type is u32. > IFLA_BRIDGE_CFM_MEP_CONFIG_UNICAST_MAC: > The configured MEP unicast MAC address. > The type is 6*u8 (array). > This is used as SMAC in all transmitted CFM frames. > IFLA_BRIDGE_CFM_MEP_CONFIG_MDLEVEL: > The configured MEP unicast MD level. > The type is u32. > It must be in the range 1-7. > No CFM frames are passing through this MEP on lower levels. > IFLA_BRIDGE_CFM_MEP_CONFIG_MEPID: > The configured MEP ID. > The type is u32. > It must be in the range 0-0x1FFF. > This MEP ID is inserted in any transmitted CCM frame. > > IFLA_BRIDGE_CFM_CC_CONFIG_INSTANCE: > The configured MEP instance number. > The type is u32. > IFLA_BRIDGE_CFM_CC_CONFIG_ENABLE: > The Continuity Check (CC) functionality is enabled or disabled. > The type is u32 (bool). > IFLA_BRIDGE_CFM_CC_CONFIG_EXP_INTERVAL: > The CC expected receive interval of CCM frames. > The type is u32 (br_cfm_ccm_interval). > This is also the transmission interval of CCM frames when enabled. > IFLA_BRIDGE_CFM_CC_CONFIG_EXP_MAID: > The CC expected receive MAID in CCM frames. > The type is CFM_MAID_LENGTH*u8. > This is MAID is also inserted in transmitted CCM frames. > > IFLA_BRIDGE_CFM_CC_PEER_MEP_INSTANCE: > The configured MEP instance number. > The type is u32. > IFLA_BRIDGE_CFM_CC_PEER_MEPID: > The CC Peer MEP ID added. > The type is u32. > When a Peer MEP ID is added and CC is enabled it is expected to > receive CCM frames from that Peer MEP. > > IFLA_BRIDGE_CFM_CC_RDI_INSTANCE: > The configured MEP instance number. > The type is u32. > IFLA_BRIDGE_CFM_CC_RDI_RDI: > The RDI that is inserted in transmitted CCM PDU. > The type is u32 (bool). > > IFLA_BRIDGE_CFM_CC_CCM_TX_INSTANCE: > The configured MEP instance number. > The type is u32. > IFLA_BRIDGE_CFM_CC_CCM_TX_DMAC: > The transmitted CCM frame destination MAC address. > The type is 6*u8 (array). > This is used as DMAC in all transmitted CFM frames. > IFLA_BRIDGE_CFM_CC_CCM_TX_SEQ_NO_UPDATE: > The transmitted CCM frame update (increment) of sequence > number is enabled or disabled. > The type is u32 (bool). > IFLA_BRIDGE_CFM_CC_CCM_TX_PERIOD: > The period of time where CCM frame are transmitted. > The type is u32. > The time is given in seconds. SETLINK IFLA_BRIDGE_CFM_CC_CCM_TX > must be done before timeout to keep transmission alive. > When period is zero any ongoing CCM frame transmission > will be stopped. > IFLA_BRIDGE_CFM_CC_CCM_TX_IF_TLV: > The transmitted CCM frame update with Interface Status TLV > is enabled or disabled. > The type is u32 (bool). > IFLA_BRIDGE_CFM_CC_CCM_TX_IF_TLV_VALUE: > The transmitted Interface Status TLV value field. > The type is u8. > IFLA_BRIDGE_CFM_CC_CCM_TX_PORT_TLV: > The transmitted CCM frame update with Port Status TLV is enabled > or disabled. > The type is u32 (bool). > IFLA_BRIDGE_CFM_CC_CCM_TX_PORT_TLV_VALUE: > The transmitted Port Status TLV value field. > The type is u8. > > GETLINK RTEXT_FILTER_CFM_STATUS: > IFLA_BRIDGE_CFM_MEP_STATUS_INSTANCE: > The MEP instance number of the delivered status. > The type is u32. > IFLA_BRIDGE_CFM_MEP_STATUS_OPCODE_UNEXP_SEEN: > The MEP instance received CFM PDU with unexpected Opcode. > The type is u32 (bool). > IFLA_BRIDGE_CFM_MEP_STATUS_VERSION_UNEXP_SEEN: > The MEP instance received CFM PDU with unexpected version. > The type is u32 (bool). > IFLA_BRIDGE_CFM_MEP_STATUS_RX_LEVEL_LOW_SEEN: > The MEP instance received CCM PDU with MD level lower than > configured level. This frame is discarded. > The type is u32 (bool). > > IFLA_BRIDGE_CFM_CC_PEER_STATUS_INSTANCE: > The MEP instance number of the delivered status. > The type is u32. > IFLA_BRIDGE_CFM_CC_PEER_STATUS_PEER_MEPID: > The added Peer MEP ID of the delivered status. > The type is u32. > IFLA_BRIDGE_CFM_CC_PEER_STATUS_CCM_DEFECT: > The CCM defect status. > The type is u32 (bool). > True means no CCM frame is received for 3.25 intervals. > IFLA_BRIDGE_CFM_CC_CONFIG_EXP_INTERVAL. > IFLA_BRIDGE_CFM_CC_PEER_STATUS_RDI: > The last received CCM PDU RDI. > The type is u32 (bool). > IFLA_BRIDGE_CFM_CC_PEER_STATUS_PORT_TLV_VALUE: > The last received CCM PDU Port Status TLV value field. > The type is u8. > IFLA_BRIDGE_CFM_CC_PEER_STATUS_IF_TLV_VALUE: > The last received CCM PDU Interface Status TLV value field. > The type is u8. > IFLA_BRIDGE_CFM_CC_PEER_STATUS_SEEN: > A CCM frame has been received from Peer MEP. > The type is u32 (bool). > This is cleared after GETLINK IFLA_BRIDGE_CFM_CC_PEER_STATUS_INFO. > IFLA_BRIDGE_CFM_CC_PEER_STATUS_TLV_SEEN: > A CCM frame with TLV has been received from Peer MEP. > The type is u32 (bool). > This is cleared after GETLINK IFLA_BRIDGE_CFM_CC_PEER_STATUS_INFO. > IFLA_BRIDGE_CFM_CC_PEER_STATUS_SEQ_UNEXP_SEEN: > A CCM frame with unexpected sequence number has been received > from Peer MEP. > The type is u32 (bool). > When a sequence number is not one higher than previously received > then it is unexpected. > This is cleared after GETLINK IFLA_BRIDGE_CFM_CC_PEER_STATUS_INFO. > > Reviewed-by: Horatiu Vultur <horatiu.vultur@xxxxxxxxxxxxx> > Signed-off-by: Henrik Bjoernlund <henrik.bjoernlund@xxxxxxxxxxxxx> > --- > include/uapi/linux/if_bridge.h | 125 ++++++ > include/uapi/linux/rtnetlink.h | 2 + > net/bridge/Makefile | 2 +- > net/bridge/br_cfm.c | 5 + > net/bridge/br_cfm_netlink.c | 724 +++++++++++++++++++++++++++++++++ > net/bridge/br_netlink.c | 67 ++- > net/bridge/br_private.h | 31 ++ > 7 files changed, 940 insertions(+), 16 deletions(-) > create mode 100644 net/bridge/br_cfm_netlink.c > Hi Henrik, This patch definitely can be broken into a few smaller ones that add support for configuring/dumping different cfm parts. Also, and more importantly, the IFLA_AF_SPEC fix must go to -net as a separate patch since the problem is there even now. After it gets accepted and -net is merged into net-next you can rebase on top of it. Thanks, Nik