 |
|
 |
|
Total : 270632
Today : 100
Yesterday : 188
|
|
|
 |
|
 |
6명이 RSS를 구독하고 있습니다.
|
 |
|
 |
|
|
|
|
간단히 구현한 ifconfig 예제
Programming/Network |
2007/05/08 12:16
|
|
|
| span class=postbody이 소스는 ifconfig 의 간략한 구현예제 입니다.
br /
하지만 다양한 플랫폼을 지원하기 위해서 범용적인 코드를 원한다면
br /
아래의 예제처럼 구현하기 보다는 pcap library 를 사용하기를 권합니다.
br /
br /
/spantable align=center border=0 cellpadding=3 cellspacing=1 width=90%tbodytr tdspan class=genmedb코드:/b/span/td /tr tr td class=code
br /
/*
br /
Copyright (c) 2002 Information Equipment co.,LTD.
br /
All Right Reserved.
br /
br /
Code by JaeHyuk Cho lt;minzkn@infoeq.co.krgt;
br /
br /
- Simple is best
br /
br /
*/
br /
br /
#if !defined(DEF_ifconfig_c)
br /
#define DEF_ifconfig_c ifconfig.c
br /
br /
#include lt;stdio.hgt;
br /
#include lt;unistd.hgt;
br /
#include lt;stdlib.hgt;
br /
#include lt;string.hgt;
br /
#include lt;sys/types.hgt;
br /
#include lt;sys/socket.hgt;
br /
#include lt;sys/ioctl.hgt;
br /
#include lt;netinet/in.hgt;
br /
#include lt;net/if.hgt;
br /
#include lt;netinet/if_ether.hgt;
br /
#include lt;arpa/inet.hgt;
br /
#include lt;netdb.hgt;
br /
#include lt;netinet/ether.hgt;
br /
br /
int main(int s_Argc, char **s_Argv);
br /
br /
int main(int s_Argc, char **s_Argv)
br /
{
br /
int s_SocketHandle;nbsp; nbsp;
br /
int s_RequestCount = 10;
br /
struct ifconf s_ifconfig;
br /
struct ifreq *s_ifrequest;
br /
struct sockaddr_in *s_SockAddr_In;
br /
br /
char s_StringBuffer[1 lt;lt; 10];
br /
char *s_MyTitle;
br /
char *s_MyDevice;
br /
char *s_MyIP, *s_MyBroadcastIP, *s_MyNetmaskIP;
br /
char *s_MyHWAddr;
br /
char *s_MyFlagString;
br /
intnbsp; s_MyFlags, s_MyMTU, s_MyMetric;
br /
fprintf(stdout, MZ_ifconfig v0.0.1b - Copyright(c)InfoEQ co.,LTD - %s %s\n, __DATE__, __TIME__);
br /
fprintf(stdout, Code by JaeHyuk Cho - lt;minzkn@infoeq.co.krgt;\n\n);
br /
s_SocketHandle = socket(AF_INET, SOCK_DGRAM, 0);
br /
if(s_SocketHandle gt;= 0)
br /
{
br /
nbsp; memset((void *)amp;s_ifconfig, 0, sizeof(struct ifconf));
br /
nbsp; do
br /
nbsp; {
br /
nbsp; nbsp;if(s_ifconfig.ifc_buf)free(s_ifconfig.ifc_buf);
br /
nbsp; nbsp;s_ifconfig.ifc_len = sizeof(struct ifreq) * s_RequestCount;
br /
nbsp; nbsp;s_ifconfig.ifc_buf = malloc(s_ifconfig.ifc_len);
br /
nbsp; nbsp;if(s_ifconfig.ifc_buf)
br /
nbsp; nbsp;{
br /
nbsp; nbsp; if(ioctl(s_SocketHandle, SIOCGIFCONF, amp;s_ifconfig) == 0)
br /
nbsp; nbsp; {
br /
nbsp; nbsp; nbsp;if(s_ifconfig.ifc_len lt; (sizeof(struct ifreq) * s_RequestCount))
br /
nbsp; nbsp; nbsp;{
br /
nbsp; nbsp; nbsp; s_ifrequest = s_ifconfig.ifc_req;
br /
nbsp; nbsp; nbsp; if(s_ifrequest)
br /
nbsp; nbsp; nbsp; {
br /
nbsp; nbsp; nbsp; nbsp;for(s_RequestCount = 0;s_RequestCount lt; s_ifconfig.ifc_len;s_RequestCount += sizeof(struct ifreq), s_ifrequest++)
br /
nbsp; nbsp; nbsp; nbsp;{
br /
nbsp; nbsp; nbsp; nbsp; /* ------------------------------------------------------------------------ */nbsp; nbsp;nbsp; nbsp; nbsp; nbsp;
br /
nbsp; nbsp;s_MyDevice = strdup(s_ifrequest-gt;ifr_name);
br /
nbsp; nbsp;
br /
nbsp; nbsp;/* ioctl(s_SocketHandle, SIOCGIFADDR, s_ifrequest); */
br /
nbsp; nbsp;s_SockAddr_Innbsp; nbsp; nbsp; nbsp;= (struct sockaddr_in *)(amp;s_ifrequest-gt;ifr_addr);
br /
nbsp; nbsp; nbsp; nbsp; s_MyIPnbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; = strdup(inet_ntoa(s_SockAddr_In-gt;sin_addr));nbsp; nbsp;
br /
nbsp; nbsp;ioctl(s_SocketHandle, SIOCGIFBRDADDR, s_ifrequest);nbsp; nbsp; nbsp; nbsp;
br /
nbsp; nbsp;s_SockAddr_Innbsp; nbsp; nbsp; nbsp;= (struct sockaddr_in *)amp;s_ifrequest-gt;ifr_broadaddr;
br /
nbsp; nbsp; nbsp; nbsp; s_MyBroadcastIPnbsp; nbsp; nbsp;= strdup(inet_ntoa(s_SockAddr_In-gt;sin_addr));nbsp; nbsp;
br /
nbsp; nbsp;ioctl(s_SocketHandle, SIOCGIFNETMASK, s_ifrequest);nbsp; nbsp; nbsp; nbsp;
br /
nbsp; nbsp;s_SockAddr_Innbsp; nbsp; nbsp; nbsp;= (struct sockaddr_in *)amp;s_ifrequest-gt;ifr_netmask;
br /
nbsp; nbsp; nbsp; nbsp; s_MyNetmaskIPnbsp; nbsp; nbsp; nbsp;= strdup(inet_ntoa(s_SockAddr_In-gt;sin_addr));nbsp; nbsp;
br /
#if 0nbsp; nbsp;
br /
nbsp; nbsp;if(ioctl(s_SocketHandle, SIOCGIFHWADDR, s_ifrequest) == 0)
br /
nbsp; nbsp;{
br /
nbsp; nbsp; unsigned char s_NullHWAddr[] = {0, 0, 0, 0, 0, 0};
br /
nbsp; nbsp; nbsp; nbsp; nbsp;if(memcmp(amp;s_ifrequest-gt;ifr_hwaddr.sa_data[0],
amp;s_NullHWAddr[0], sizeof(s_NullHWAddr)) == 0)strcpy(s_StringBuffer,
);
br /
nbsp; nbsp; else sprintf(s_StringBuffer, HWAddr %s, ether_ntoa((struct ether_addr *)s_ifrequest-gt;ifr_hwaddr.sa_data));
br /
nbsp; nbsp;}
br /
nbsp; nbsp;else strcpy(s_StringBuffer, HWAddr lt;ERRORgt;);
br /
#else
br /
nbsp; nbsp;if(ioctl(s_SocketHandle, SIOCGIFHWADDR, s_ifrequest) == 0)
br /
nbsp; nbsp;{
br /
nbsp; nbsp; sprintf(s_StringBuffer, HWAddr %s, ether_ntoa((struct ether_addr *)s_ifrequest-gt;ifr_hwaddr.sa_data));
br /
nbsp; nbsp;}
br /
nbsp; nbsp;else strcpy(s_StringBuffer, HWAddr lt;ERRORgt;);
br /
#endif
br /
nbsp; nbsp;s_MyHWAddr = strdup(s_StringBuffer);
br /
nbsp; nbsp;
br /
nbsp; nbsp;if(ioctl(s_SocketHandle, SIOCGIFFLAGS, s_ifrequest) == 0)s_MyFlags = s_ifrequest-gt;ifr_flags;
br /
nbsp; nbsp;else s_MyFlags = 0;
br /
nbsp; nbsp; nbsp; nbsp;nbsp; nbsp;strcpy(s_StringBuffer, );
br /
nbsp; nbsp;if(s_MyFlags == 0)strcpy(s_StringBuffer, [NO FLAGS]);
br /
nbsp; nbsp;else
br /
nbsp; nbsp;{
br /
nbsp; nbsp; if(s_MyFlags amp; IFF_UPnbsp; nbsp; nbsp; nbsp; nbsp; )strcat(s_StringBuffer, UP );nbsp; nbsp;
br /
nbsp; nbsp; if(s_MyFlags amp; IFF_BROADCASTnbsp; nbsp;)strcat(s_StringBuffer, BROADCAST );nbsp; nbsp;
br /
nbsp; nbsp; if(s_MyFlags amp; IFF_DEBUGnbsp; nbsp; nbsp; nbsp;)strcat(s_StringBuffer, DEBUG );nbsp; nbsp;
br /
nbsp; nbsp; if(s_MyFlags amp; IFF_LOOPBACKnbsp; nbsp; )strcat(s_StringBuffer, LOOPBACK );nbsp; nbsp;
br /
nbsp; nbsp; if(s_MyFlags amp; IFF_POINTOPOINT )strcat(s_StringBuffer, POINTOPOINT );nbsp; nbsp;
br /
nbsp; nbsp; if(s_MyFlags amp; IFF_NOTRAILERSnbsp; )strcat(s_StringBuffer, NOTRAILERS );nbsp; nbsp;
br /
nbsp; nbsp; if(s_MyFlags amp; IFF_RUNNINGnbsp; nbsp; nbsp;)strcat(s_StringBuffer, RUNNING );nbsp; nbsp;
br /
nbsp; nbsp; if(s_MyFlags amp; IFF_NOARPnbsp; nbsp; nbsp; nbsp;)strcat(s_StringBuffer, NOARP );nbsp; nbsp;
br /
nbsp; nbsp; if(s_MyFlags amp; IFF_PROMISCnbsp; nbsp; nbsp;)strcat(s_StringBuffer, PROMISC );nbsp; nbsp;
br /
nbsp; nbsp; if(s_MyFlags amp; IFF_ALLMULTInbsp; nbsp; )strcat(s_StringBuffer, ALLMULTI );nbsp; nbsp;
br /
nbsp; nbsp; if(s_MyFlags amp; IFF_SLAVEnbsp; nbsp; nbsp; nbsp;)strcat(s_StringBuffer, SLAVE );nbsp; nbsp;
br /
nbsp; nbsp; if(s_MyFlags amp; IFF_MASTERnbsp; nbsp; nbsp; )strcat(s_StringBuffer, MASTER );nbsp; nbsp;
br /
nbsp; nbsp; if(s_MyFlags amp; IFF_MULTICASTnbsp; nbsp;)strcat(s_StringBuffer, MULTICAST );nbsp; nbsp;
br /
nbsp; nbsp;}
br /
nbsp; nbsp;s_MyFlagString = strdup(s_StringBuffer);
br /
br /
nbsp; nbsp; nbsp; nbsp; s_MyTitle = strdup(Unknown); /* Not support */
br /
nbsp; nbsp;
br /
nbsp; nbsp;if(ioctl(s_SocketHandle, SIOCGIFMTU, s_ifrequest) == 0)s_MyMTU = s_ifrequest-gt;ifr_mtu;
br /
nbsp; nbsp;else s_MyMTU = 0;
br /
nbsp; nbsp;
br /
nbsp; nbsp;if(ioctl(s_SocketHandle, SIOCGIFMETRIC, s_ifrequest) == 0)s_MyMetric = s_ifrequest-gt;ifr_metric;
br /
nbsp; nbsp;else s_MyMetric = 0;
br /
nbsp; nbsp; nbsp; nbsp;
br /
nbsp; nbsp;/* Print. */
br /
nbsp; nbsp;fprintf(stdout,
br /
nbsp; nbsp;nbsp; nbsp;%-8s Link encap:%snbsp; %s\n
br /
nbsp; nbsp;nbsp; nbsp;%-8s inet addr %-15snbsp; Broadcast %-15snbsp; Netmask %-15s\n
br /
nbsp; nbsp;nbsp; nbsp;%-8s %s MTU:%d Metric:%d\n
br /
nbsp; nbsp;nbsp; nbsp;\n,
br /
nbsp; nbsp;nbsp; nbsp; nbsp; nbsp; s_MyDevice, s_MyTitle, s_MyHWAddr,
br /
nbsp; nbsp;nbsp; nbsp;, s_MyIP, s_MyBroadcastIP, s_MyNetmaskIP,
br /
nbsp; nbsp;nbsp; nbsp;, s_MyFlagString, s_MyMTU, s_MyMetric ? s_MyMetric : 1
br /
nbsp; nbsp;nbsp; nbsp; nbsp; nbsp;);
br /
nbsp; nbsp;
br /
nbsp; nbsp;/* Free. */
br /
nbsp; nbsp;if(s_MyTitlenbsp; nbsp; nbsp; )free(s_MyTitle);
br /
nbsp; nbsp;if(s_MyDevicenbsp; nbsp; nbsp;)free(s_MyDevice);
br /
nbsp; nbsp;if(s_MyIPnbsp; nbsp; nbsp; nbsp; nbsp;)free(s_MyIP);
br /
nbsp; nbsp;if(s_MyBroadcastIP)free(s_MyBroadcastIP);
br /
nbsp; nbsp;if(s_MyNetmaskIPnbsp; )free(s_MyNetmaskIP);
br /
nbsp; nbsp;if(s_MyHWAddrnbsp; nbsp; nbsp;)free(s_MyHWAddr);
br /
nbsp; nbsp;if(s_MyFlagString )free(s_MyFlagString);
br /
nbsp; nbsp; nbsp; nbsp; /* ------------------------------------------------------------------------ */nbsp; nbsp;nbsp; nbsp; nbsp; nbsp;
br /
nbsp; nbsp; nbsp; nbsp;}
br /
nbsp; nbsp; nbsp; }
br /
nbsp; nbsp; nbsp; break;
br /
nbsp; nbsp; nbsp;}
br /
nbsp; nbsp; nbsp;else s_RequestCount += 10;
br /
nbsp; nbsp; }
br /
nbsp; nbsp; else break;
br /
nbsp; nbsp;}
br /
nbsp; nbsp;else break;
br /
nbsp; }while(1);nbsp;
br /
nbsp; if(s_ifconfig.ifc_buf)free(s_ifconfig.ifc_buf);
br /
nbsp; close(s_SocketHandle);nbsp; nbsp;nbsp;
br /
}
br /
else fprintf(stderr, Can not open socket !!!\n);
br /
return(0);
br /
}
br /
br /
#endif
br /
br /
/* End of source */
br /
/td /tr/tbody/tablespan class=postbody
br /
br /
위의 예제를 조금더 응용하여
br /
현재 내가 보유한 여러개의 IP중에서 어떤 IP가 route를 통하는지
br /
검출하는 간략한 예제입니다.
br /
즉, 이것은 여러개의 IP를 가지고 있을때 이중에서 어떤것이
br /
인터넷으로 패킷이 탈수 있는지 검출하는 것입니다.
br /
물론 이것은 너무 간략하게 구현하려고 약간의 case 에 대해서 버그가 존재합니다. 그것은 적절히 코드를 보강하면 됩니다.
br /
/spantable align=center border=0 cellpadding=3 cellspacing=1 width=90%tbodytr tdspan class=genmedb코드:/b/span/td /tr tr td class=code
br /
/*
br /
Copyright (c) 2002 Information Equipment co.,LTD.
br /
All Right Reserved.
br /
br /
Code by JaeHyuk Cho lt;minzkn@infoeq.co.krgt;
br /
br /
- Simple is best
br /
br /
*/
br /
br /
#include lt;stdio.hgt;
br /
#include lt;unistd.hgt;
br /
#include lt;stdlib.hgt;
br /
#include lt;string.hgt;
br /
#include lt;sys/types.hgt;
br /
#include lt;sys/socket.hgt;
br /
#include lt;sys/ioctl.hgt;
br /
#include lt;netinet/in.hgt;
br /
#include lt;net/if.hgt;
br /
#include lt;netinet/if_ether.hgt;
br /
#include lt;arpa/inet.hgt;
br /
#include lt;netdb.hgt;
br /
#include lt;unistd.hgt;
br /
#include lt;fcntl.hgt;
br /
br /
int main(int s_Argc, char **s_Argv);
br /
br /
int main(int s_Argc, char **s_Argv)
br /
{
br /
const char *c_Proc_Route = /proc/net/route;
br /
int s_SocketHandle, s_Handle, s_ReadBytes, s_RequestCount = 10;
br /
struct ifconf s_ifconfig;
br /
struct ifreq *s_ifrequest;
br /
struct sockaddr_in *s_SockAddr_In;
br /
char *s_MyDevice;
br /
char *s_MyIP, *s_MyBroadcastIP, *s_MyNetmaskIP, *s_RouteIP, *s_RouteName;
br /
char s_Buffer[ 32 lt;lt; 10 ];
br /
br /
s_RouteIP = s_RouteName = (char *)0;
br /
s_Handle = open(c_Proc_Route, O_RDONLY);
br /
if(s_Handle gt;= 0)
br /
{
br /
nbsp; s_ReadBytes = read(s_Handle, amp;s_Buffer[0], sizeof(s_Buffer) - 1);
br /
nbsp; close(s_Handle);
br /
nbsp; if(s_ReadBytes gt; 0)
br /
nbsp; {
br /
nbsp; nbsp;unsigned long s_Destination, s_Gateway, s_Flags, s_RefCnt, s_Use, s_Metric, s_Mask;
br /
nbsp; nbsp;char *s_TraceBuffer;
br /
nbsp; nbsp;int s_Index;
br /
nbsp; nbsp;s_Buffer[ s_ReadBytes ] = '\0';
br /
nbsp; nbsp;s_Index = 0;
br /
nbsp; nbsp;s_TraceBuffer = (char *)(amp;s_Buffer[s_Index]);
br /
nbsp; nbsp;do
br /
nbsp; nbsp;{
br /
nbsp; nbsp; s_RouteName = (char *)0;
br /
nbsp; nbsp; if(s_Buffer[s_Index] == '\0' || s_Buffer[s_Index] == '\n')
br /
nbsp; nbsp; {
br /
nbsp; nbsp; nbsp;s_Buffer[s_Index] = '\0';
br /
nbsp; nbsp; nbsp;s_RouteName = s_TraceBuffer;
br /
nbsp; nbsp; nbsp;while((*s_TraceBuffer) != ' ' amp;amp; (*s_TraceBuffer) != '\t' amp;amp; (*s_TraceBuffer) != '\0')s_TraceBuffer++;
br /
nbsp; nbsp; nbsp;*(s_TraceBuffer++) = '\0';
br /
nbsp; nbsp; nbsp;while(((*s_TraceBuffer) == ' ' || (*s_TraceBuffer) == '\t') amp;amp; (*s_TraceBuffer) != '\0')s_TraceBuffer++;
br /nbsp; nbsp; nbsp;if(sscanf(s_TraceBuffer, %lx%lx%lX%lu%lu%lu%lx,
amp;s_Destination, amp;s_Gateway, amp;s_Flags, amp;s_RefCnt,
amp;s_Use, amp;s_Metric, amp;s_Mask) == 7)nbsp; nbsp; br /
nbsp; nbsp; nbsp;{
br /
nbsp; nbsp; nbsp; if(s_Destination == 0lu)
br /
nbsp; nbsp; nbsp; {
br /
nbsp; nbsp; nbsp; nbsp;/* fprintf(stdout, Default route [%s:%s]\n, s_RouteName, s_TraceBuffer); */
br /
nbsp; nbsp; nbsp; nbsp;break;
br /
nbsp; nbsp; nbsp; }
br /
nbsp; nbsp; nbsp; /* else fprintf(stdout, Normal route [%s:%s]\n, s_RouteName, s_TraceBuffer); */
br /
nbsp; nbsp; nbsp;}
br /
nbsp; nbsp; nbsp;/* else fprintf(stdout, Non line [%s:%s]\n, s_RouteName, s_TraceBuffer);nbsp; */
br /
nbsp; nbsp; nbsp;s_Index++;
br /
nbsp; nbsp; nbsp;s_TraceBuffer = (char *)(amp;s_Buffer[s_Index]);
br /
nbsp; nbsp; }
br /
nbsp; nbsp; else if(s_Buffer[s_Index] == '\r')s_Buffer[s_Index++] = ' ';
br /
nbsp; nbsp; else s_Index++;
br /
nbsp; nbsp;}while(s_Index lt; s_ReadBytes);
br /
nbsp; }
br /
}
br /
else fprintf(stderr, Can not open \%s\\n, c_Proc_Route);
br /
br /
if(s_RouteName == (char *)0)
br /
{
br /
nbsp; return(-1);
br /
}
br /
br /
s_SocketHandle = socket(AF_INET, SOCK_DGRAM, 0);
br /
if(s_SocketHandle gt;= 0)
br /
{
br /
nbsp; memset((void *)amp;s_ifconfig, 0, sizeof(struct ifconf));
br /
nbsp; do
br /
nbsp; {
br /
nbsp; nbsp;if(s_ifconfig.ifc_buf)free(s_ifconfig.ifc_buf);
br /
nbsp; nbsp;s_ifconfig.ifc_len = sizeof(struct ifreq) * s_RequestCount;
br /
nbsp; nbsp;s_ifconfig.ifc_buf = malloc(s_ifconfig.ifc_len);
br /
nbsp; nbsp;if(s_ifconfig.ifc_buf)
br /
nbsp; nbsp;{
br /
nbsp; nbsp; if(ioctl(s_SocketHandle, SIOCGIFCONF, amp;s_ifconfig) == 0)
br /
nbsp; nbsp; {
br /
nbsp; nbsp; nbsp;if(s_ifconfig.ifc_len lt; (sizeof(struct ifreq) * s_RequestCount))
br /
nbsp; nbsp; nbsp;{
br /
nbsp; nbsp; nbsp; s_ifrequest = s_ifconfig.ifc_req;
br /
nbsp; nbsp; nbsp; if(s_ifrequest)
br /
nbsp; nbsp; nbsp; {
br /
nbsp; nbsp; nbsp; nbsp;for(s_RequestCount = 0;s_RequestCount lt; s_ifconfig.ifc_len;s_RequestCount += sizeof(struct ifreq), s_ifrequest++)
br /
nbsp; nbsp; nbsp; nbsp;{
br /
nbsp; nbsp;s_MyDevice = strdup(s_ifrequest-gt;ifr_name);
br /
nbsp; nbsp;
br /
nbsp; nbsp;ioctl(s_SocketHandle, SIOCGIFADDR, s_ifrequest);nbsp; nbsp; nbsp; nbsp;
br /
nbsp; nbsp;s_SockAddr_Innbsp; nbsp; nbsp; nbsp;= (struct sockaddr_in *)(amp;s_ifrequest-gt;ifr_addr);
br /
nbsp; nbsp; nbsp; nbsp; s_MyIPnbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; = strdup(inet_ntoa(s_SockAddr_In-gt;sin_addr));nbsp; nbsp;
br /
nbsp; nbsp;ioctl(s_SocketHandle, SIOCGIFBRDADDR, s_ifrequest);nbsp; nbsp; nbsp; nbsp;
br /
nbsp; nbsp;s_SockAddr_Innbsp; nbsp; nbsp; nbsp;= (struct sockaddr_in *)amp;s_ifrequest-gt;ifr_broadaddr;
br /
nbsp; nbsp; nbsp; nbsp; s_MyBroadcastIPnbsp; nbsp; nbsp;= strdup(inet_ntoa(s_SockAddr_In-gt;sin_addr));nbsp; nbsp;
br /
nbsp; nbsp;ioctl(s_SocketHandle, SIOCGIFNETMASK, s_ifrequest);nbsp; nbsp; nbsp; nbsp;
br /
nbsp; nbsp;s_SockAddr_Innbsp; nbsp; nbsp; nbsp;= (struct sockaddr_in *)amp;s_ifrequest-gt;ifr_netmask;
br /
nbsp; nbsp; nbsp; nbsp; s_MyNetmaskIPnbsp; nbsp; nbsp; nbsp;= strdup(inet_ntoa(s_SockAddr_In-gt;sin_addr));nbsp; nbsp;
br /
nbsp; nbsp;
br /
nbsp; nbsp;if(strcmp(s_MyDevice, lo) != 0 amp;amp; strcmp(s_RouteName,
s_MyDevice) == 0)fprintf(stdout, %s %s\n, s_MyDevice, s_MyIP);
br /
nbsp; nbsp;
br /
nbsp; nbsp;if(s_MyDevicenbsp; nbsp; nbsp;)free(s_MyDevice);
br /
nbsp; nbsp;if(s_MyIPnbsp; nbsp; nbsp; nbsp; nbsp;)free(s_MyIP);
br /
nbsp; nbsp;if(s_MyBroadcastIP)free(s_MyBroadcastIP);
br /
nbsp; nbsp;if(s_MyNetmaskIPnbsp; )free(s_MyNetmaskIP);
br /
nbsp; nbsp; nbsp; nbsp;}
br /
nbsp; nbsp; nbsp; }
br /
nbsp; nbsp; nbsp; break;
br /
nbsp; nbsp; nbsp;}
br /
nbsp; nbsp; nbsp;else s_RequestCount += 10;
br /
nbsp; nbsp; }
br /
nbsp; nbsp; else break;
br /
nbsp; nbsp;}
br /
nbsp; nbsp;else break;
br /
nbsp; }while(1);nbsp;
br /
nbsp; if(s_ifconfig.ifc_buf)free(s_ifconfig.ifc_buf);
br /
nbsp; close(s_SocketHandle);nbsp; nbsp;nbsp;
br /
}
br /
else fprintf(stderr, Can not open socket !!!\n);
br /
return(0);
br /
}
br /
br /
/* End of source */
/td/tr/tbody/table |
장인정신
2007/05/08 12:16
2007/05/08 12:16
|
|
| 이 글의 관련글(트랙백) 주소 :: http://blog.minzkn.com/trackback/272 |
|
|
|
|
 |
|
 |
|
 이 저작물은 크리에이티브 커먼즈 코리아 저작자표시-비영리-변경금지 2.0 대한민국 라이센스에 따라 이용하실 수 있습니다.
|