#include <stdio.h>
#include<stdlib.h>
int g_ip[50];
unsigned int ipsplit(char *pipstring)
{
unsigned int a[4];
unsigned int i;
unsigned int ulret;
char * pipBeg;
pipBeg = pipstring;
a[0]=atoi(pipBeg);
i=1;
while('\0' != *pipBeg)
{
if ('.' == *pipBeg)
{
a[i]=atoi(pipBeg+1);
i++;
}
pipBeg++;
}
ulret = (a[0]<<24) |(a[1]<<16) | (a[2]<<8) |(a[3]);
return ulret;
}
ipcfg()
{
int i = 0;
while(fgets(buf, size, fp) !=NULL)
{
ipint=ipsplit(buf);
g_ip[i] = ipint;
i++;
}
}
int binarysearch(int array[], int n, int item)
{
int lower, upper, mid;
lower = 0;
upper = n-1;
while(lower <= upper)
{
mid = (lower + upper)/2;
if (array[mid] > item)
{
upper = mid-1;
}
else if (array[mid] < item)
{
lower = mid+1;
}
else
return mid;
}
return -1;
}
ret = binarysearch(g_ggsn,ipsrc)
if (ret!=-1)
{
return down;
}
else
{
ret = binarysearch(g_sgsn,ipsrc);
if (ret!=-1)
{
return up;
}
else
{
free(pkt);
}
return;
}
#include<stdlib.h>
int g_ip[50];
unsigned int ipsplit(char *pipstring)
{
unsigned int a[4];
unsigned int i;
unsigned int ulret;
char * pipBeg;
pipBeg = pipstring;
a[0]=atoi(pipBeg);
i=1;
while('\0' != *pipBeg)
{
if ('.' == *pipBeg)
{
a[i]=atoi(pipBeg+1);
i++;
}
pipBeg++;
}
ulret = (a[0]<<24) |(a[1]<<16) | (a[2]<<8) |(a[3]);
return ulret;
}
ipcfg()
{
int i = 0;
while(fgets(buf, size, fp) !=NULL)
{
ipint=ipsplit(buf);
g_ip[i] = ipint;
i++;
}
}
int binarysearch(int array[], int n, int item)
{
int lower, upper, mid;
lower = 0;
upper = n-1;
while(lower <= upper)
{
mid = (lower + upper)/2;
if (array[mid] > item)
{
upper = mid-1;
}
else if (array[mid] < item)
{
lower = mid+1;
}
else
return mid;
}
return -1;
}
ret = binarysearch(g_ggsn,ipsrc)
if (ret!=-1)
{
return down;
}
else
{
ret = binarysearch(g_sgsn,ipsrc);
if (ret!=-1)
{
return up;
}
else
{
free(pkt);
}
return;
}