void putdatos() { printf("\n\t\tpaquete:\t\t\t%d",cabr->paquete); printf("\n\t\tindice:\t\t\t\t%d",cabr->indice); printf("\n\t\tip:\t\t\t\t");putip(cabr->ip); printf("\n\t\tmac:\t\t\t\t");putmac(cabr->mac); printf("\n\t\tmascara:\t\t\t");putip(cabr->mascara); printf("\n\t\tip publica:\t\t\t");putip(cabr->ippu); printf("\n\t\tip puerta enlace:\t\t");putip(cabr->ipenlace); printf("\n\t\tmac puerta enlace\t\t");putmac(cabr->macenlace); }
int comprueba(unsigned char *ipin,unsigned char *macin) { sprintf(consulta,"select * from ipmac where ip='%d.%d.%d.%d'",ipin[0],ipin[1],ipin[2],ipin[3]); if (mysql_query(con,consulta)) {fprintf(stderr, "%s\n", mysql_error(con));printf("\n\n\t\t\terror mysql");exit(-1);} res=mysql_use_result(con); while ((row = mysql_fetch_row(res)) != NULL) { sscanf(row[0],"%d.%d.%d.%d",(int*)&ipm[0],(int*)&ipm[1],(int*)&ipm[2],(int*)&ipm[3]); sscanf(row[1],"%x:%x:%x:%x:%x:%x",(unsigned int *)&macm[0],(unsigned int *)&macm[1],(unsigned int *)&macm[2],(unsigned int *)&macm[3],(unsigned int *)&macm[4],(unsigned int *)&macm[5]); if(!memcmp(ipin+0,ipm+0,4)) { if(!memcmp(macin+0,macm+0,6)) { mysql_free_result(res); return 0; } printf("\n\nla mac es incorrecta"); printf("\nip:");putip(ipin);printf("\tmac:");putmac(macin); memcpy(cabr->macbase+0,macm+0,6); //printf("cabr->macbase====");putmac(cabr->macbase); mysql_free_result(res); return 1; } } mysql_free_result(res); return 3; }
int resivearp(sred *cabr,unsigned char *tuip,unsigned char *tumac) { struct timeval start, end; double time; gettimeofday(&start, NULL); while(time<2000) { int tam; tam=recvfrom(cabr->paquete,tramaarprec,48,0,NULL,0); if(tam==-1) {perror("\nError al recibir trama");} else { if(!memcmp(tramaarprec+20,codrespuesta,2)&&!memcmp(tramaarprec+0,cabr->mac,6)&&!memcmp(tramaarprec+28,tuip,4)) { memcpy(tumac+0,tramaarprec+6,6); printf("\npidiendo mac ala ip ");putip(tuip);printf(" ..."); printf("su mac es: ");putmac(tumac);printf("\n"); return 0; } } gettimeofday(&end, NULL); time =(end.tv_sec - start.tv_sec)*1000 + (end.tv_usec - start.tv_usec)/1000.0; } return 1; }
void *analisatrama(void *args) { llc *f=cabt; int longitud; while(1) { f=cabt; while(f!=NULL) { printf("\ntrama llc recivida\n\n"); imprime(f->trama,148); memcpy(tumac+0,f->trama+6,6); memcpy(macdes+0,f->trama+0,6); printf("\nmac origen:\t\t");putmac(tumac); printf("\nmac destino:\t\t");putmac(macdes); longitud=(f->trama[12]*256 + f->trama[13] ); printf("\nlongitud:\t\t%d",longitud); sap[3]=dsapandssap(f->trama[14],f->trama[15]); //printf("\norigen:\t\t%x",sap[0]); //printf("\ndestino:\t\t%x",sap[1]); sap[4]=innusu(f->trama[16]); if(sap[4]==0||sap[4]==2) chektwobytes(f->trama[16],f->trama[17],0); if(sap[4]==1) chektwobytes(f->trama[16],f->trama[17],1); if(sap[4]==3) chekonebyte(f->trama[16]); while(f->sig==NULL){;} f=f->sig; printf("\n ya ahy otra trama por analisar presione enter porfavor!!"); getchar(); getchar(); } } return("termine de mostrar"); }
void regline(int macline, int vconst) { line[0] = c; lp = line; for(;;) { if(c == '\\') { *lp = ' '; backsl(); if(c == '%') /* no blank for hyphenation char */ lp--; } if(c == '\n') break; if(intable && c=='T') { *++lp = C; if(c=='{' || c=='}') { lp[-1] = ' '; *lp = C; } } else { if(msflag == 1 && eqnflag == 1) { eqnflag = 0; *++lp = 'x'; } *++lp = C; } } *lp = '\0'; if(lp != line) { if(wordflag) putwords(); else if(macline) putmac(line,vconst); else Bprint(&(bout.Biobufhdr), "%S\n", line); } }