On Fri, 2020-10-09 at 14:35 +0000, Henrik Bjoernlund wrote: > This is the implementation of CFM netlink status > get information interface. > > Add new nested netlink attributes. These attributes are used by the > user space to get status information. > > GETLINK: > 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. > > 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. > > Signed-off-by: Henrik Bjoernlund <henrik.bjoernlund@xxxxxxxxxxxxx> > Reviewed-by: Horatiu Vultur <horatiu.vultur@xxxxxxxxxxxxx> > --- > include/uapi/linux/if_bridge.h | 29 +++++++++ > include/uapi/linux/rtnetlink.h | 1 + > net/bridge/br_cfm_netlink.c | 105 +++++++++++++++++++++++++++++++++ > net/bridge/br_netlink.c | 16 ++++- > net/bridge/br_private.h | 6 ++ > 5 files changed, 154 insertions(+), 3 deletions(-) > [snip] > diff --git a/net/bridge/br_cfm_netlink.c b/net/bridge/br_cfm_netlink.c > index 952b6372874e..94e9b46d5fb4 100644 > --- a/net/bridge/br_cfm_netlink.c > +++ b/net/bridge/br_cfm_netlink.c > @@ -617,3 +617,108 @@ int br_cfm_config_fill_info(struct sk_buff *skb, struct net_bridge *br) > nla_info_failure: > return -EMSGSIZE; > } > + > +int br_cfm_status_fill_info(struct sk_buff *skb, struct net_bridge *br) > +{ > + struct nlattr *tb; > + struct br_cfm_mep *mep; > + struct br_cfm_peer_mep *peer_mep; > + > Reverse xmas tree here, too. Sorry I missed these earlier.