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"; }
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"; }
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"; }
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; }
/* * 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 ); }