The ioctl(2) is intended to provide more details about the cause of
the down for the link.
Eventually we might define a comprehensive list of codes for the
situations. But interface also allows the driver to provide free-form
null-terminated ASCII string to provide arbitrary non-formalized
information. Sample implementation exists for mlx5(4), where the
string is fetched from firmware controlling the port.
Reviewed by: hselasky, rrs
Sponsored by: Mellanox Technologies
MFC after: 1 week
Differential revision: https://reviews.freebsd.org/D21527
case SIOCGIFGENERIC:
case SIOCGIFRSSKEY:
case SIOCGIFRSSHASH:
+ case SIOCGIFDOWNREASON:
if (ifp->if_ioctl == NULL)
return (EOPNOTSUPP);
error = (*ifp->if_ioctl)(ifp, cmd, data);
#define IFNET_PCP_NONE 0xff /* PCP disabled */
+#define IFDR_MSG_SIZE 64
+#define IFDR_REASON_MSG 1
+#define IFDR_REASON_VENDOR 2
+struct ifdownreason {
+ char ifdr_name[IFNAMSIZ];
+ uint32_t ifdr_reason;
+ uint32_t ifdr_vendor;
+ char ifdr_msg[IFDR_MSG_SIZE];
+};
+
#endif /* __BSD_VISIBLE */
#ifdef _KERNEL
#define SIOCGLANPCP _IOWR('i', 152, struct ifreq) /* Get (V)LAN PCP */
#define SIOCSLANPCP _IOW('i', 153, struct ifreq) /* Set (V)LAN PCP */
+#define SIOCGIFDOWNREASON _IOWR('i', 154, struct ifdownreason)
+
#endif /* !_SYS_SOCKIO_H_ */