Пример #1
0
 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;
 }
Пример #2
0
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");
};