bool ProcDebugBGL::debug_post_attach(ThreadState *) { if (executable_path.empty()) { char *jobid = getenv("BG_JOBID"); if (jobid) { ostringstream linkstream; linkstream << "/jobs/" << jobid << "/exe"; string linkname(linkstream.str()); executable_path = deref_link(linkname.c_str()); sw_printf("[%s:%u] - Set executable path to %s\n", FILE__, __LINE__, executable_path.c_str()); } } library_tracker = new StaticBinaryLibState(this, executable_path); return true; }
void printIntfInfo(const char *ifname) { _glidix_netstat netstat; if (_glidix_netconf_stat(ifname, &netstat, sizeof(_glidix_netstat)) == -1) { fprintf(stderr, "%s: %s: %s\n", progName, ifname, strerror(errno)); exit(1); }; _glidix_ifaddr4 *addrs = (_glidix_ifaddr4*) malloc(sizeof(_glidix_ifaddr4) * netstat.numAddrs4); _glidix_netconf_getaddrs(ifname, AF_INET, addrs, sizeof(_glidix_ifaddr4) * netstat.numAddrs4); _glidix_ifaddr6 *addrs6 = (_glidix_ifaddr6*) malloc(sizeof(_glidix_ifaddr6) * netstat.numAddrs6); _glidix_netconf_getaddrs(ifname, AF_INET6, addrs6, sizeof(_glidix_ifaddr6) * netstat.numAddrs6); printf("Interface: %s\n", netstat.ifname); printf("\tPackets sent: %d\n", netstat.numTrans); printf("\tPackets received: %d\n", netstat.numRecv); printf("\tPacket errors: %d\n", netstat.numErrors); printf("\tPackets dropped: %d\n", netstat.numDropped); printf("\tScope ID: %u\n", netstat.scopeID); printf("\tLink: %s\n", linkname(netstat.ifconfig.type)); if (netstat.ifconfig.type == 1) { // IF_ETHERNET printf("\t\tMAC: %02x:%02x:%02x:%02x:%02x:%02x\n", netstat.ifconfig.ethernet.mac[0], netstat.ifconfig.ethernet.mac[1], netstat.ifconfig.ethernet.mac[2], netstat.ifconfig.ethernet.mac[3], netstat.ifconfig.ethernet.mac[4], netstat.ifconfig.ethernet.mac[5] ); }; printf("\tAddresses:\n"); char netaddr[INET6_ADDRSTRLEN]; int netsize; int i; for (i=0; i<netstat.numAddrs4; i++) { inet_ntop(AF_INET, &addrs[i].addr, netaddr, INET_ADDRSTRLEN); netsize = 0; uint8_t *bytes = (uint8_t*) &addrs[i].mask; int j; netsize = 0; for (j=0; j<4; j++) { if (bytes[j] == 0xFF) { netsize += 8; } else { uint8_t byte = bytes[j]; while (byte & 0x80) { netsize++; byte <<= 1; }; break; }; }; char domname[256]; getdomname(domname, addrs[i].domain); printf("\t\t%s/%d (%s)\n", netaddr, netsize, domname); }; for (i=0; i<netstat.numAddrs6; i++) { inet_ntop(AF_INET6, &addrs6[i].addr, netaddr, INET6_ADDRSTRLEN); netsize = 0; uint8_t *bytes = (uint8_t*) &addrs6[i].mask; int j; netsize = 0; for (j=0; j<16; j++) { if (bytes[j] == 0xFF) { netsize += 8; } else { uint8_t byte = bytes[j]; while (byte & 0x80) { netsize++; byte <<= 1; }; break; }; }; char domname[256]; getdomname(domname, addrs6[i].domain); printf("\t\t%s/%d (%s)\n", netaddr, netsize, domname); }; printf("\n"); };