int dump_route_test(char *hdr,int hdrlen,unsigned char* payload,int paylen,FILE* fd,char segregationLevel,char *prefix) { int i=2;/* flags + urilength */ unsigned char flags=0; if(!(segregationLevel & (ONLY_URIS|JUNIT))){ return dump_standard_hdr_test(hdr,hdrlen,(unsigned char*)payload,paylen,fd); } flags=payload[0]; i=2; if(flags & HAS_NAME_F){ i+=2; } if((!(segregationLevel & JUNIT)) && (segregationLevel & ONLY_URIS)){ return dump_standard_hdr_test(hdr,hdrlen,(unsigned char*)(payload+i),payload[1],fd); } if((segregationLevel & JUNIT) && (segregationLevel & ONLY_URIS)){ return print_uri_junit_tests(hdr,hdrlen,&payload[i],payload[1],fd,1,""); } if(segregationLevel & JUNIT){ i=2; fprintf(fd,"%sgetAddress.getDisplayName=(S)",prefix); if(flags & HAS_NAME_F){ fprintf(fd,"%.*s\n",payload[i+1],&hdr[payload[i]]); i+=2; }else fprintf(fd,"(null)\n"); return print_uri_junit_tests(hdr,hdrlen,&payload[i],payload[1],fd,0,"getAddress.getURI."); } return 0; }
int dump_msg_test(char *code,int fd,char header,char segregationLevel) { unsigned short int i,j,l,m,msglen; int k; char r,*msg; unsigned char *payload; payload=(unsigned char*)code; memcpy(&i,code,2);/*the CODE of the request/response*/ memcpy(&j,&code[MSG_START_IDX],2);/*where the MSG starts*/ memcpy(&msglen,&code[MSG_LEN_IDX],2);/*how long the MSG is*/ i=ntohs(i); j=ntohs(j); msglen=ntohs(msglen); if(header==0) { write(fd,code,j+msglen); write(fd,&theSignal,4); return 0; } msg=(char*)&payload[j]; r=(i<100)?1:0; if(r) { if(segregationLevel & ALSO_RURI) { if(!(segregationLevel & JUNIT)) { k=htonl(payload[REQUEST_URI_IDX+1]+payload[REQUEST_URI_IDX+2]); write(fd,&k,4); write(fd,msg,ntohl(k)); k=htonl((long)payload[REQUEST_URI_IDX]); write(fd,&k,4); write(fd,&payload[REQUEST_URI_IDX+1],payload[REQUEST_URI_IDX]); write(fd,&theSignal,4); } else print_uri_junit_tests(msg,payload[REQUEST_URI_IDX+1]+payload[REQUEST_URI_IDX+2] ,&payload[REQUEST_URI_IDX+1],payload[REQUEST_URI_IDX],fd,1,""); } i=REQUEST_URI_IDX+1+payload[REQUEST_URI_IDX]; } else { i=REQUEST_URI_IDX; } j=payload[i]; i++; for(k=i; k<i+(j*3); k+=3) { memcpy(&l,&payload[k+1],2); memcpy(&m,&payload[k+4],2); l=ntohs(l); m=ntohs(m); if(header==(char)payload[k] || (header=='U' && (payload[k]=='f' || payload[k]=='t' || payload[k]=='m' || payload[k]=='o' || payload[k]=='p'))) dump_headers_test(msg,msglen,&payload[i+(j*3)+l+3],m-l,payload[k],fd,segregationLevel); } return 1; }
int dump_digest_test(char *hdr,int hdrlen,unsigned char* payload,int paylen,FILE* fd,char segregationLevel) { int i=2;/* 2*flags */ unsigned char flags1=0; flags1=payload[0]; if(!(segregationLevel & ONLY_URIS)) return dump_standard_hdr_test(hdr,hdrlen,payload,paylen,fd); i=2; if(flags1 & HAS_NAME_F) i+=2; if(flags1 & HAS_REALM_F) i+=2; if(flags1 & HAS_NONCE_F) i+=2; if(flags1 & HAS_URI_F){ if(!(segregationLevel & JUNIT) && (segregationLevel & ONLY_URIS)) return dump_standard_hdr_test(hdr,hdrlen,&payload[i+1],payload[i],fd); if((segregationLevel & JUNIT) && (segregationLevel & ONLY_URIS)) return print_uri_junit_tests(hdr,hdrlen,&payload[i+1],payload[i],fd,1,""); } return 0; }
/** * dumps to FD a NBO int which is the header length, the header, * an NBO int which is the payload length, and the payload. * * hdr is the header, * hdrlen is the header length, * payload is the payload, * paylen is the payload length, * fd is the file descriptor to which to dump, * segregationLevel is wether only URIS must be dumped or all the header code. * * return 0 on success, <0 on error */ int dump_to_body_test(char *hdr,int hdrlen,unsigned char* payload,int paylen,int fd,char segregationLevel) { int i=2;/* flags + urilength */ unsigned char flags=0; flags=payload[0]; if(!segregationLevel){ return dump_standard_hdr_test(hdr,hdrlen,payload,paylen,fd); } i=2; if(flags & HAS_DISPLAY_F){ i+=2; } if(flags & HAS_TAG_F){ i+=2; } if(!(segregationLevel & JUNIT) && (segregationLevel & ONLY_URIS)){ return dump_standard_hdr_test(hdr,hdrlen,&payload[i],payload[1],fd); } if((segregationLevel & JUNIT) && (segregationLevel & ONLY_URIS)){ return print_uri_junit_tests(hdr,hdrlen,&payload[i],payload[1],fd,1,""); } return 0; }
int dump_contact_test(char *hdr,int hdrlen,unsigned char* payload,int paylen,int fd,char segregationLevel,char *prefix) { int i=2;/* flags + urilength */ unsigned char flags=0; int n; flags=payload[0]; if((segregationLevel & SEGREGATE)&& !(segregationLevel & ONLY_URIS)) return dump_standard_hdr_test(hdr,hdrlen,payload,paylen,fd); i=2; if(flags & HAS_NAME_F) i+=2; if(flags & HAS_Q_F) i+=2; if(flags & HAS_EXPIRES_F) i+=2; if(flags & HAS_RECEIVED_F) i+=2; if(flags & HAS_METHOD_F) i+=2; if(!(segregationLevel & JUNIT) && (segregationLevel & ONLY_URIS)) return dump_standard_hdr_test(hdr,hdrlen,(&payload[i]),(int)payload[1],fd); if((segregationLevel & JUNIT) && (segregationLevel & ONLY_URIS)) return print_uri_junit_tests(hdr,hdrlen,&payload[i],payload[1],fd,1,""); if((segregationLevel & JUNIT) && !(segregationLevel & ONLY_URIS)){ i=2; n=write(fd,prefix,strlen(prefix)); n=write(fd,"getAddress.getDisplayName=(S)",29); if(flags & HAS_NAME_F){ n=write(fd,&hdr[payload[i]],payload[i+1]); n=write(fd,"\n",1); i+=2; }else n=write(fd,"(null)\n",7); n=write(fd,prefix,strlen(prefix)); n=write(fd,"getQValue=(F)",13); if(flags & HAS_Q_F){ n=write(fd,&hdr[payload[i]],payload[i+1]); n=write(fd,"\n",1); i+=2; }else n=write(fd,"(null)\n",7); n=write(fd,prefix,strlen(prefix)); n=write(fd,"getExpires=(I)",14); if(flags & HAS_EXPIRES_F){ n=write(fd,&hdr[payload[i]],payload[i+1]); n=write(fd,"\n",1); i+=2; }else n=write(fd,"(null)\n",7); if(flags & HAS_RECEIVED_F){ i+=2; } if(flags & HAS_METHOD_F){ i+=2; } n=write(fd,prefix,strlen(prefix)); n=write(fd,"getParameter=(SAVP)",19); for(i+=payload[1];i<paylen-1;i+=2){ printf("%.*s=",payload[i+1]-payload[i]-1,&hdr[payload[i]]); printf("%.*s;",(payload[i+2]-payload[i+1])==0?0:(payload[i+2]-payload[i+1]-1),&hdr[payload[i+1]]); } n=write(fd,"\n",1); if (n < 0) LM_ERR("error while writing the final eol\n"); } return 0; }