Exemple #1
0
TEST_F(TestString, add4cp) {
	unsigned int addr;
	unsigned short port;

	V4addr saddr("192.168.2.1:4321");
	saddr.getAddr(&addr, &port);
	ASSERT_EQ(addr, MK_ADDR(192, 168, 2, 1)) << "error ip string4cp constructed object in IP\n";
	ASSERT_EQ(port, 4321) << "error ip string4cp object in port\n";
}
Exemple #2
0
TEST_F(TestString, add2d) {
	unsigned int addr;
	unsigned short port;

	V4addr saddr("192.168.");
	saddr.getAddr(&addr, &port);
	ASSERT_EQ(addr, MK_ADDR(192, 168, 0, 0)) << "error ip string2d constructed object in IP\n";
	ASSERT_EQ(port, 0) << "error ip string2d object in port\n";
}
Exemple #3
0
TEST_F(TestString, add3d) {
	unsigned int addr;
	unsigned short port;
	string str;

	V4addr saddr("192.168.2.");
	saddr.getAddr(&addr, &port);
	ASSERT_EQ(addr, MK_ADDR(192, 168, 2, 0)) << "error ip string3d constructed object in IP\n";
	ASSERT_EQ(port, 0) << "error ip string3d object in port\n";
	saddr.getIPPortString(str);
	ASSERT_EQ(0, strcmp("192.168.2.0:0", str.c_str())) << "add3d object address:port mismatch\n";
}
Exemple #4
0
int main(int argc,char ** argv)
{
  	char errBuf[PCAP_ERRBUF_SIZE], * devStr;
	
#if 0
  	if (parse_options(argc, argv)){
		printf("parse falid!%s %d\n",__FUNCTION__,__LINE__);	
		return -1;
	};
#endif
	char fiter[1024] = {0};
	char *p_tr = fiter;
	unsigned int addr = MK_ADDR(10,10,133,0);	
	unsigned int mask = MK_ADDR(255,255,255,0);	
	
	rev_addr = REVERSE_ADDR(addr);	
	rev_mask = REVERSE_ADDR(mask);
/*open the config file read the Filter*/
	FILE *fp = NULL;
	if (!(fp = fopen("./fiter.cfg","r"))){
		printf("open the file falid! %s %d \n",__FUNCTION__,__LINE__);
		return -1;
	}

	if(!fgets(fiter,1023,fp)){
		fprintf(stderr,"fets occur somthing wrong !");
		return -1;
	}
#ifdef HTTP_REDIRET
	p_tr = strstr(fiter,"LOCATION:");

	if (p_tr){
		*p_tr = '\0';
		snprintf(location,100,"%s",p_tr + 9 );	
		printf("the location is %s ,the len is %d\n",location,(int)strlen(location));
	}
	else{
		p_tr = fiter;
		while (*p_tr && *p_tr != '\r' && *p_tr !='\n'){
			p_tr ++;
		}
		*p_tr = '\0';
	}
#else
	while (*p_tr && *p_tr != '\r' && *p_tr !='\n' && *p_tr !='L'){
			p_tr ++;
		}
	*p_tr = '\0';
#endif
	fclose(fp);

	char *FILER = NULL;
	int len = strlen(fiter);
	if (!(FILER = malloc (len + 1 ))){
		printf("malloc the mem  falid! %s %d \n",__FUNCTION__,__LINE__);
		return -1;
	}
	memcpy(FILER,fiter,len+1);
	printf("filter = %s  len= %d\n",FILER,(int)strlen(FILER));

	daemonize();
  /* get a device */
  	devStr = pcap_lookupdev(errBuf);
  
  	if(devStr)
  	{
    		printf("success: device: %s\n", devStr);
  	}
  	else
  	{
    		printf("error: %s %s %d\n", errBuf,__FUNCTION__,__LINE__);
    		return -1;
  	}
  
  /* open a device, wait until a packet arrives */
  	pcap_t * device = pcap_open_live(devStr, 65535, 1, 0, errBuf);
  
  	if(!device)
  	{
    		printf("error: pcap_open_live(): %s %s %d\n", errBuf,__FUNCTION__,__LINE__);
    		return -1;
  	}
  
  /* construct a filter */
  
  	struct bpf_program filter;
  	if (pcap_compile(device, &filter, FILER, 1, 0)){
		printf("pcap_compile error %s %d\n",__FUNCTION__,__LINE__);
		return -1;
	}
  	if (pcap_setfilter(device, &filter)){
		printf("pcap_setfolter error %s %d\n",__FUNCTION__,__LINE__);
		return -1;
	}
	
	free(FILER);

  /*    if the second parameter is negative wait loop forever*/
  	pcap_loop(device, -1, packet_capture, (u_char*)devStr);

	pcap_close(device);
	
  	return 0;
}
Exemple #5
0
/*
 * SearchGbl -- look up a global symbol name
 */
static search_result LkupGblName( section_info *inf, imp_mod_handle cim,
                        imp_mod_handle im, lookup_item *li, void *d )
{
    gbl_link            *lnk;
    gbl_link            *lnk_array;
    gbl_info            *gbl;
    hash_link           lnk_off;
    int                 (*compare)(void const*,void const*,size_t);
    char                *gblname;
    size_t              gbllen;
    char                *nam = NULL;
    size_t              namlen = 0;
    char                *snam;
    size_t              snamlen;
    char                *mangled;
    size_t              mangle_len;
    unsigned            entry;
    info_block          *blk;
    int                 lkup_dtor;
    int                 lkup_full = 0;
    imp_sym_handle      *is;
    address             addr;
    search_result       sr;

    sr = SR_NONE;
    compare = li->case_sensitive ? memcmp : memicmp;

    lkup_dtor = (li->type == ST_DESTRUCTOR);
    /* only want to hash the source code portion of the name */
    switch( source_name( li->name.start, li->name.len, &snam, &snamlen ) ) {
    case __NOT_MANGLED:
        lkup_full = 0;
        nam = snam;
        namlen = snamlen;
        break;
    case __MANGLED_DTOR:
        lkup_dtor = 1;
        /* fall through */
    case __MANGLED_CTOR:
    case __MANGLED:
    case __MANGLED_INTERNAL:
        lkup_full = 1;
        nam = li->name.start;
        namlen = li->name.len;
        break;
    }
    for( blk = inf->gbl; blk != NULL; blk = blk->next ) {
        lnk_array = LINK( blk )->link;
        lnk_off = LINK( blk )->hash[ GblNameHash( snam, snamlen ) ];
        while( lnk_off != HL_END ) {
            lnk = MAKE_LP( lnk_array, lnk_off );
            gbl = lnk->gbl;
            if( lnk->dtor != lkup_dtor ) goto next_global;
            if( lkup_full ) {
                if( GBL_NAMELEN( gbl ) != namlen ) goto next_global;
            } else {
                if( lnk->src_len != namlen ) goto next_global;
            }
            if( im == IMH_NOMOD ) {
                if( GBL_KIND( gbl ) & GBL_KIND_STATIC &&
                    cim != GBL_MOD( gbl ) ) goto next_global;
            } else {
                if( im != GBL_MOD( gbl ) ) goto next_global;
            }
            mangled = GBL_NAME( gbl );
            gblname = mangled;
            if( !lkup_full ) gblname += lnk->src_off;
            if( compare( gblname, nam, namlen ) != 0 ) goto next_global;
            if( li->scope.start != NULL ) {
                mangle_len = GBL_NAMELEN( gbl );
                entry = 0;
                for( ;; ) {
                    if( !__scope_name( mangled, mangle_len, entry,
                             (const char **)&gblname, &gbllen ) ) goto next_global;
                    if( li->scope.len == gbllen &&
                        compare( li->scope.start, gblname, gbllen ) == 0 ) {
                        break;
                    }
                    ++entry;
                }
            }
            is = DCSymCreate( inf->ctl, d );
            is->im = GBL_MOD( gbl );
            MK_ADDR( addr, gbl->addr, inf->sect_id );
            /* need to see if there's a local symbol at the right
                    address and use that instead */
            if( cim == is->im ) {
                /* We've already checked the local symbols. It ain't there. */
                GblCreate( is, gbl );
            } else if( LookupLclAddr( inf->ctl, addr, is ) == SR_EXACT ) {
                SetGblLink( is, gbl );
            } else {
                GblCreate( is, gbl );
            }
            sr = SR_EXACT;
next_global:
            lnk_off = lnk->hash_off;
        }
    }
    return( sr );
}