/* Add missing bits to list of interfaces */
iflinux_add_driver(cfg, interfaces);
- iflinux_add_wireless(cfg, interfaces);
- iflinux_add_bridge(cfg, interfaces);
+ if (LOCAL_CHASSIS(cfg)->c_cap_available & LLDP_CAP_WLAN)
+ iflinux_add_wireless(cfg, interfaces);
+ if (LOCAL_CHASSIS(cfg)->c_cap_available & LLDP_CAP_BRIDGE)
+ iflinux_add_bridge(cfg, interfaces);
iflinux_add_bond(cfg, interfaces);
iflinux_add_vlan(cfg, interfaces);
iflinux_add_physical(cfg, interfaces);
struct lldpd_hardware *hardware;
char *name = NULL;
- LOCAL_CHASSIS(cfg)->c_cap_enabled &= ~(LLDP_CAP_BRIDGE | LLDP_CAP_WLAN);
+ LOCAL_CHASSIS(cfg)->c_cap_enabled &=
+ ~(LLDP_CAP_BRIDGE | LLDP_CAP_WLAN | LLDP_CAP_STATION);
TAILQ_FOREACH(iface, interfaces, next) {
if (iface->type & IFACE_BRIDGE_T)
LOCAL_CHASSIS(cfg)->c_cap_enabled |= LLDP_CAP_BRIDGE;
if (iface->type & IFACE_WIRELESS_T)
LOCAL_CHASSIS(cfg)->c_cap_enabled |= LLDP_CAP_WLAN;
}
- if (LOCAL_CHASSIS(cfg)->c_cap_enabled == 0)
- LOCAL_CHASSIS(cfg)->c_cap_enabled = LLDP_CAP_STATION;
+ if ((LOCAL_CHASSIS(cfg)->c_cap_available & LLDP_CAP_STATION) &&
+ (LOCAL_CHASSIS(cfg)->c_cap_enabled == 0))
+ LOCAL_CHASSIS(cfg)->c_cap_enabled = LLDP_CAP_STATION;
if (LOCAL_CHASSIS(cfg)->c_id != NULL &&
LOCAL_CHASSIS(cfg)->c_id_subtype == LLDP_CHASSISID_SUBTYPE_LLADDR)
lldpd_routing_enabled(struct lldpd *cfg)
{
int routing;
+
+ if ((LOCAL_CHASSIS(cfg)->c_cap_available & LLDP_CAP_ROUTER) == 0)
+ return 0;
+
if ((routing = interfaces_routing_enabled(cfg)) == -1) {
log_debug("localchassis", "unable to check if routing is enabled");
return 0;
else
LOCAL_CHASSIS(cfg)->c_med_sw = strdup("Unknown");
#endif
- if (LOCAL_CHASSIS(cfg)->c_cap_enabled == 0)
+ if ((LOCAL_CHASSIS(cfg)->c_cap_available & LLDP_CAP_STATION) &&
+ (LOCAL_CHASSIS(cfg)->c_cap_enabled == 0))
LOCAL_CHASSIS(cfg)->c_cap_enabled = LLDP_CAP_STATION;
/* Set chassis ID if needed. This is only done if chassis ID