Beispiel #1
0
int simple_getgateway(void)
{
	unsigned long ulGateway;
	ulGateway = wb740getgateway("eth1", g_RemoteNet_Buf, RNT_BUFFER_LEN);
	printf("eth1 gateway=%s\n", inet_ntoa(*(struct in_addr*)&ulGateway, g_RemoteNet_Buf, RNT_BUFFER_LEN));
	ulGateway = wb740getgateway("eth0", g_RemoteNet_Buf, RNT_BUFFER_LEN);
	printf("eth0 gateway=%s\n", inet_ntoa(*(struct in_addr*)&ulGateway, g_RemoteNet_Buf, RNT_BUFFER_LEN));
	ulGateway = wb740getgateway("lo", g_RemoteNet_Buf, RNT_BUFFER_LEN);
	printf("lo gateway=%s\n", inet_ntoa(*(struct in_addr*)&ulGateway, g_RemoteNet_Buf, RNT_BUFFER_LEN));
	return true;
}
Beispiel #2
0
unsigned long GetGateway(const char *pcInterface)
{
#ifndef WLAN
	return wb740getgateway(pcInterface,g_StreamServer_Buf, System_BUFFER_LEN);
#else
	return 0;
#endif
}
Beispiel #3
0
int GetDevInterface(void)
{
	int dev_num = 0;
	struct ifreq ifbuf[MAXINTERFACES/2]={0};
	struct ifconf ifc;
	int i,fd, ifnum=0;
	int iInterface;
	unsigned long ulGateway;


	dev_num = 1;

	memset(&ipmc, 0, sizeof(ipmc));
	memset(&ifc, 0, sizeof(ifc));

	fd = socket(AF_INET, SOCK_DGRAM, 0, g_RemoteNet_Buf, RNT_BUFFER_LEN);
	if (fd < 0) 
    {
		perror("socket");
		return fd;
    }

    ifc.ifc_len = sizeof(ifbuf);
    ifc.ifc_buf = (caddr_t)ifbuf;
    if(netioctl_withbuf(fd, SIOCGIFCONF, &ifc,sizeof(ifc), g_RemoteNet_Buf, RNT_BUFFER_LEN) < 0)
    {
        netclose(fd, g_RemoteNet_Buf, RNT_BUFFER_LEN);
        return -1;
    }
    ifnum = ifc.ifc_len/sizeof(struct ifreq);
    for(i=0;i<ifnum;i++)
         diag_printf("interface name are %s\n",ifbuf[i].ifr_name);

   //strcpy(ifbuf[0].ifr_name,"eth1");

    while(ifnum-- > 0)
    {
        if( strlen(ifbuf[ifnum].ifr_name) > 4 ||ifbuf[ifnum].ifr_name == NULL||
           strcmp(ifbuf[ifnum].ifr_name,"lo")==0||
            netioctl(fd, SIOCGIFFLAGS, &ifbuf[ifnum],sizeof(ifbuf[ifnum]), g_RemoteNet_Buf, RNT_BUFFER_LEN) < 0 ||
            !(ifbuf[ifnum].ifr_flags & IFF_UP) ||
            netioctl(fd, SIOCGIFADDR, &ifbuf[ifnum],sizeof(ifbuf[ifnum]), g_RemoteNet_Buf, RNT_BUFFER_LEN) < 0)
            continue;              

		diag_printf("if name ===%s\n",ifbuf[ifnum].ifr_name);
		
		/*Get the MAC Address*/
        if (netioctl(fd, SIOCGIFHWADDR, &ifbuf[ifnum],sizeof(ifbuf[ifnum]), g_RemoteNet_Buf, RNT_BUFFER_LEN) >= 0)
       		diag_printf("MAC Address====%d\n",ifbuf[ifnum].ifr_hwaddr.sa_data);
       	else
       		diag_printf("get mac addr error\n");
       	
		/*Get the Netmask*/
        if (netioctl(fd, SIOCGIFNETMASK, &ifbuf[ifnum],sizeof(ifbuf[ifnum]), g_RemoteNet_Buf, RNT_BUFFER_LEN) >= 0)
       		diag_printf("Netmask====%s\n",inet_ntoa( (((struct sockaddr_in *)&ifbuf[ifnum].ifr_netmask)->sin_addr), g_RemoteNet_Buf, RNT_BUFFER_LEN));    
       	else
       		diag_printf("get netmask error\n");

        /*Get the IP Address*/    
        if (netioctl(fd, SIOCGIFADDR, &ifbuf[dev_num], sizeof(ifbuf[dev_num]), g_RemoteNet_Buf, RNT_BUFFER_LEN) >= 0)
	        diag_printf("ipaddr Address====%s\n",inet_ntoa((((struct sockaddr_in *)&ifbuf[ifnum].ifr_addr)->sin_addr), g_RemoteNet_Buf, RNT_BUFFER_LEN));
	    else
	    	diag_printf("get if addr error\n");
	    
        /*Get the Gateway*/
		ulGateway = wb740getgateway(ifbuf[ifnum].ifr_name, g_RemoteNet_Buf, RNT_BUFFER_LEN);
		diag_printf("Gateway====%s\n",inet_ntoa(*(struct in_addr*)&ulGateway, g_RemoteNet_Buf, RNT_BUFFER_LEN));
        dev_num++;
    }

    netclose(fd, g_RemoteNet_Buf, RNT_BUFFER_LEN);
    return dev_num;
}
Beispiel #4
0
void GetPubIPInfo(unsigned long *pulPublicIpAddress,
							unsigned long *pulPublicSubnetMask,
							unsigned long *pulDefaultGateway,
							unsigned long *pulDNSServer)
{
	BOOL bEnable[2];
	int fd;
	struct ifreq ifr;
	bEnable[0] = g_ConfigParam.abAsNetEnable[0];
	bEnable[1] = g_ConfigParam.abAsNetEnable[1];
	
	
#ifndef WLAN
	if (!bEnable[0] && !bEnable[1]) bEnable[0] = TRUE;
   	fd = socket(AF_INET, SOCK_DGRAM, 0, g_Mctest_Buf, MCTEST_BUFFER_LEN);
	strcpy(ifr.ifr_name, g_apcNetworkInterface[0]);
#else
	if (!bEnable[0] && !bEnable[1]) bEnable[1] = TRUE;
    fd = socket(AF_INET, SOCK_DGRAM, 0);
	strcpy(ifr.ifr_name, g_apcNetworkInterface[1]);
#endif
    if (fd < 0) 
    {
        perror("socket");
        return;
    }

  	/*Get the IP Address*/ 
	if(pulPublicIpAddress != NULL)
	{        
#ifndef WLAN  	   
        if (netioctl(fd, SIOCGIFADDR, &ifr, sizeof(ifr),g_Mctest_Buf, MCTEST_BUFFER_LEN) >= 0)
#else
        if (ioctl(fd, SIOCGIFADDR, &ifr) >= 0)
#endif         
            *pulPublicIpAddress = (unsigned int)(((struct sockaddr_in *)&ifr.ifr_addr)->sin_addr.s_addr);
         else
         	*pulPublicIpAddress = 0;
#ifndef WLAN  	   
        diag_printf("ipaddr Address====%s\n",inet_ntoa(((struct sockaddr_in *)&ifr.ifr_addr)->sin_addr, g_Mctest_Buf, MCTEST_BUFFER_LEN));  
#else
        diag_printf("ipaddr Address====%s\n",inet_ntoa(((struct sockaddr_in *)&ifr.ifr_addr)->sin_addr));  
#endif 
	}   
	     
	/*Get the Netmask*/
	if(pulPublicSubnetMask != NULL)
	{         	
#ifndef WLAN  	   
        if (netioctl(fd, SIOCGIFNETMASK, &ifr,sizeof(ifr), g_Mctest_Buf, MCTEST_BUFFER_LEN) >= 0)
#else
        if (ioctl(fd, SIOCGIFNETMASK, &ifr) == 0)
#endif         
            *pulPublicSubnetMask = (unsigned int)(((struct sockaddr_in *)&ifr.ifr_addr)->sin_addr.s_addr);
        else
            *pulPublicSubnetMask = 0;
#ifndef WLAN  	   
        diag_printf("Netmask====%s\n",inet_ntoa(((struct sockaddr_in *)&ifr.ifr_netmask)->sin_addr, g_Mctest_Buf, MCTEST_BUFFER_LEN));    
#else
        diag_printf("Netmask====%s\n",inet_ntoa(((struct sockaddr_in *)&ifr.ifr_netmask)->sin_addr));    
#endif   
	}
	
     /*Get the Gateway*/
	if(pulDefaultGateway != NULL)
	{
#ifndef WLAN         
        {
        	unsigned long Gateway;
        	char tmpgw[16];
        	char *c,*p;
        	int i = 0;
        	Gateway = wb740getgateway((char*)(ifr.ifr_name),g_Mctest_Buf, MCTEST_BUFFER_LEN);
        	diag_printf("Gateway====%s\n",inet_ntoa(*(struct in_addr*)&Gateway, g_Mctest_Buf, MCTEST_BUFFER_LEN));
        	if(Gateway != 0L)
        	{
        		strcpy(tmpgw,inet_ntoa(*(struct in_addr*)&Gateway, g_Mctest_Buf, MCTEST_BUFFER_LEN));
        		p = tmpgw;
        		while(*p != '\0')
        		{
        			c = p;
        			while((*p != '.') && (*p != '\0'))
        				p++;
        			*p = '\0';
        			ipmc[dev_num].gwaddr[i] = (unsigned char)atoi(c);          			
        			if(i < 3)
        			{p++; i++;  }  		
        		}	
				
			} 
			else 
				memset(ipmc[dev_num].gwaddr,0 ,4);
			
		}
#else
		if (g_ConfigParam.aucIPAssignedWay[1] == IP_ASSIGNMENT_MANUALLY)
			*pulDefaultGateway = g_ConfigParam.ulAsGateway[1];
		else
		{
			struct in_addr gateway;
			unsigned int length = sizeof(gateway);
			get_bootp_option(&wlan0_bootp_data, TAG_GATEWAY, (void*)&gateway,&length);
			diag_printf("gateway: %x\n", gateway.s_addr);
			*pulDefaultGateway = gateway.s_addr;
		}
#endif
	}
#ifndef WLAN
    netclose(fd, g_Mctest_Buf, MCTEST_BUFFER_LEN);
#else
    close(fd);
#endif
	if(pulDNSServer != NULL)
	{
		if (g_ConfigParam.aucIPAssignedWay[1] == IP_ASSIGNMENT_MANUALLY)
		{
			*pulDNSServer = g_ConfigParam.aulAsDNS[0];
   			*(pulDNSServer+1) = g_ConfigParam.aulAsDNS[1];
   			*(pulDNSServer+2) = g_ConfigParam.aulAsDNS[2];
   		}
   		else
   		{
			struct in_addr gateway;
			unsigned int length = sizeof(gateway);
			get_bootp_option(&wlan0_bootp_data, TAG_GATEWAY, (void*)&gateway,&length);
			diag_printf("gateway as dns: %x\n", gateway.s_addr);
			
			*pulDefaultGateway = gateway.s_addr;
			*pulDNSServer = gateway.s_addr;
   			*(pulDNSServer+1) = 0;
   			*(pulDNSServer+2) = 0;
   		}
	}
	
	if (g_ConfigParam.aucIPAssignedWay[1] == IP_ASSIGNMENT_DHCP
		&& wlan0_dhcpstate != DHCPSTATE_BOOTP_FALLBACK
		&& wlan0_dhcpstate != DHCPSTATE_BOUND
		)
	{
		if (g_WebCamState.bDHCP_Finished)
		{
			unsigned int GetRandomIP(void);
			unsigned int ulIP = GetRandomIP();
			if (pulPublicIpAddress != NULL)
				*pulPublicIpAddress = ulIP;
			if (pulPublicSubnetMask != NULL)
				*pulPublicSubnetMask = 0x0000FFFF;
			if (pulDefaultGateway != NULL)
				*pulDefaultGateway = ulIP;
		}
		else
		{
			if (pulPublicIpAddress != NULL)
				*pulPublicIpAddress = 0;
			if (pulPublicSubnetMask != NULL)
				*pulPublicSubnetMask = 0xFFFFFFFF;
			if (pulDefaultGateway != NULL)
				*pulDefaultGateway = 0;
		}
		if (pulDNSServer != NULL)
		{
			*pulDNSServer = 0;
			*(pulDNSServer + 1) = 0;
			*(pulDNSServer + 2) = 0;
		}
	}
    return;

}