void if_print(FILE *file, void * data) { tracked_if_t *tip = data; interface_t *ifp = tip->ifp; char addr_str[41]; int weight = tip->weight; fprintf(file, "------< NIC >------\n"); fprintf(file, " Name = %s\n", ifp->ifname); fprintf(file, " index = %d\n", ifp->ifindex); fprintf(file, " IPv4 address = %s\n", inet_ntop2(ifp->sin_addr.s_addr)); inet_ntop(AF_INET6, &ifp->sin6_addr, addr_str, 41); fprintf(file, " IPv6 address = %s\n", addr_str); /* FIXME: Harcoded for ethernet */ if (ifp->hw_type == ARPHRD_ETHER) fprintf(file, " MAC = %.2x:%.2x:%.2x:%.2x:%.2x:%.2x\n", ifp->hw_addr[0], ifp->hw_addr[1], ifp->hw_addr[2] , ifp->hw_addr[3], ifp->hw_addr[4], ifp->hw_addr[5]); if (ifp->flags & IFF_UP) fprintf(file, " is UP\n"); if (ifp->flags & IFF_RUNNING) fprintf(file, " is RUNNING\n"); if (!(ifp->flags & IFF_UP) && !(ifp->flags & IFF_RUNNING)) fprintf(file, " is DOWN\n"); if (weight) fprintf(file, " weight = %d\n", weight); fprintf(file, " MTU = %d\n", ifp->mtu); switch (ifp->hw_type) { case ARPHRD_LOOPBACK: fprintf(file, " HW Type = LOOPBACK\n"); break; case ARPHRD_ETHER: fprintf(file, " HW Type = ETHERNET\n"); break; default: fprintf(file, " HW Type = UNKNOWN\n"); break; } /* MII channel supported ? */ if (IF_MII_SUPPORTED(ifp)) fprintf(file, " NIC support MII regs\n"); else if (IF_ETHTOOL_SUPPORTED(ifp)) fprintf(file, " NIC support EHTTOOL GLINK interface\n"); else fprintf(file, " Enabling NIC ioctl refresh polling\n"); }
int if_linkbeat(const interface_t * ifp) { if (!global_data->linkbeat_use_polling) return 1; if (IF_MII_SUPPORTED(ifp) || IF_ETHTOOL_SUPPORTED(ifp)) return IF_LINKBEAT(ifp); return 1; }
void dump_if(void *data) { interface_t *ifp = data; char addr_str[41]; log_message(LOG_INFO, "------< NIC >------"); log_message(LOG_INFO, " Name = %s", ifp->ifname); log_message(LOG_INFO, " index = %d", ifp->ifindex); log_message(LOG_INFO, " IPv4 address = %s", inet_ntop2(ifp->sin_addr.s_addr)); inet_ntop(AF_INET6, &ifp->sin6_addr, addr_str, 41); log_message(LOG_INFO, " IPv6 address = %s", addr_str); /* FIXME: Harcoded for ethernet */ if (ifp->hw_type == ARPHRD_ETHER) log_message(LOG_INFO, " MAC = %.2x:%.2x:%.2x:%.2x:%.2x:%.2x", ifp->hw_addr[0], ifp->hw_addr[1], ifp->hw_addr[2] , ifp->hw_addr[3], ifp->hw_addr[4], ifp->hw_addr[5]); if (ifp->flags & IFF_UP) log_message(LOG_INFO, " is UP"); if (ifp->flags & IFF_RUNNING) log_message(LOG_INFO, " is RUNNING"); if (!(ifp->flags & IFF_UP) && !(ifp->flags & IFF_RUNNING)) log_message(LOG_INFO, " is DOWN"); log_message(LOG_INFO, " MTU = %d", ifp->mtu); switch (ifp->hw_type) { case ARPHRD_LOOPBACK: log_message(LOG_INFO, " HW Type = LOOPBACK"); break; case ARPHRD_ETHER: log_message(LOG_INFO, " HW Type = ETHERNET"); break; default: log_message(LOG_INFO, " HW Type = UNKNOWN"); break; } /* MII channel supported ? */ if (IF_MII_SUPPORTED(ifp)) log_message(LOG_INFO, " NIC support MII regs"); else if (IF_ETHTOOL_SUPPORTED(ifp)) log_message(LOG_INFO, " NIC support EHTTOOL GLINK interface"); else log_message(LOG_INFO, " Enabling NIC ioctl refresh polling"); }
static int if_linkbeat_refresh_thread(thread_t * thread) { interface_t *ifp = THREAD_ARG(thread); if (IF_MII_SUPPORTED(ifp)) ifp->linkbeat = (if_mii_probe(ifp->ifname)) ? 1 : 0; else if (IF_ETHTOOL_SUPPORTED(ifp)) ifp->linkbeat = (if_ethtool_probe(ifp->ifname)) ? 1 : 0; else ifp->linkbeat = 1; /* * update ifp->flags to get the new IFF_RUNNING status. * Some buggy drivers need this... */ if_ioctl_flags(ifp); /* Register next polling thread */ thread_add_timer(master, if_linkbeat_refresh_thread, ifp, POLLING_DELAY); return 0; }
static void dump_if(void *data) { interface_t *ifp = data; #ifdef _HAVE_VRRP_VMAC_ interface_t *ifp_u; #endif char addr_str[INET6_ADDRSTRLEN]; log_message(LOG_INFO, "------< NIC >------"); log_message(LOG_INFO, " Name = %s", ifp->ifname); log_message(LOG_INFO, " index = %d", ifp->ifindex); log_message(LOG_INFO, " IPv4 address = %s", inet_ntop2(ifp->sin_addr.s_addr)); inet_ntop(AF_INET6, &ifp->sin6_addr, addr_str, sizeof(addr_str)); log_message(LOG_INFO, " IPv6 address = %s", addr_str); /* FIXME: Hardcoded for ethernet */ if (ifp->hw_type == ARPHRD_ETHER) log_message(LOG_INFO, " MAC = %.2x:%.2x:%.2x:%.2x:%.2x:%.2x", ifp->hw_addr[0], ifp->hw_addr[1], ifp->hw_addr[2] , ifp->hw_addr[3], ifp->hw_addr[4], ifp->hw_addr[5]); if (ifp->flags & IFF_UP) log_message(LOG_INFO, " is UP"); if (ifp->flags & IFF_RUNNING) log_message(LOG_INFO, " is RUNNING"); if (!(ifp->flags & IFF_UP) && !(ifp->flags & IFF_RUNNING)) log_message(LOG_INFO, " is DOWN"); log_message(LOG_INFO, " MTU = %d", ifp->mtu); switch (ifp->hw_type) { case ARPHRD_LOOPBACK: log_message(LOG_INFO, " HW Type = LOOPBACK"); break; case ARPHRD_ETHER: log_message(LOG_INFO, " HW Type = ETHERNET"); break; default: log_message(LOG_INFO, " HW Type = UNKNOWN"); break; } #ifdef _HAVE_VRRP_VMAC_ if (ifp->vmac && (ifp_u = if_get_by_ifindex(ifp->base_ifindex))) log_message(LOG_INFO, " VMAC underlying interface = %s", ifp_u->ifname); #endif /* MII channel supported ? */ if (IF_MII_SUPPORTED(ifp)) log_message(LOG_INFO, " NIC support MII regs"); else if (IF_ETHTOOL_SUPPORTED(ifp)) log_message(LOG_INFO, " NIC support EHTTOOL GLINK interface"); else log_message(LOG_INFO, " Enabling NIC ioctl refresh polling"); if (ifp->garp_delay) { if (ifp->garp_delay->have_garp_interval) log_message(LOG_INFO, " Gratuitous ARP interval %ldms", ifp->garp_delay->garp_interval.tv_sec * 100 + ifp->garp_delay->garp_interval.tv_usec / (TIMER_HZ / 100)); if (ifp->garp_delay->have_gna_interval) log_message(LOG_INFO, " Gratuitous NA interval %ldms", ifp->garp_delay->gna_interval.tv_sec * 100 + ifp->garp_delay->gna_interval.tv_usec / (TIMER_HZ / 100)); if (ifp->garp_delay->aggregation_group) log_message(LOG_INFO, " Gratuitous ARP aggregation group %d", ifp->garp_delay->aggregation_group); } }