예제 #1
0
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;
}
예제 #2
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;
}
예제 #3
0
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;
}
예제 #4
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;
}
예제 #5
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;
}