Home | History | Annotate | Download | only in tcpdump
      1 /*
      2  * Redistribution and use in source and binary forms, with or without
      3  * modification, are permitted provided that: (1) source code
      4  * distributions retain the above copyright notice and this paragraph
      5  * in its entirety, and (2) distributions including binary code include
      6  * the above copyright notice and this paragraph in its entirety in
      7  * the documentation or other materials provided with the distribution.
      8  * THIS SOFTWARE IS PROVIDED ``AS IS'' AND
      9  * WITHOUT ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, WITHOUT
     10  * LIMITATION, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
     11  * FOR A PARTICULAR PURPOSE.
     12  *
     13  * Original code by Hannes Gredler (hannes (at) juniper.net)
     14  */
     15 
     16 #ifndef lint
     17 static const char rcsid[] _U_ =
     18     "@(#) $Header: /tcpdump/master/tcpdump/print-sip.c,v 1.1 2004-07-27 17:04:20 hannes Exp $";
     19 #endif
     20 
     21 #ifdef HAVE_CONFIG_H
     22 #include "config.h"
     23 #endif
     24 
     25 #include <tcpdump-stdinc.h>
     26 
     27 #include <stdio.h>
     28 #include <stdlib.h>
     29 
     30 #include "interface.h"
     31 #include "extract.h"
     32 
     33 #include "udp.h"
     34 
     35 void
     36 sip_print(register const u_char *pptr, register u_int len)
     37 {
     38     u_int idx;
     39 
     40     printf("SIP, length: %u%s", len, vflag ? "\n\t" : "");
     41 
     42     /* in non-verbose mode just lets print the protocol and length */
     43     if (vflag < 1)
     44         return;
     45 
     46     for (idx = 0; idx < len; idx++) {
     47         TCHECK2(*(pptr+idx), 2);
     48         if (EXTRACT_16BITS(pptr+idx) != 0x0d0a) { /* linefeed ? */
     49             safeputchar(*(pptr+idx));
     50         } else {
     51             printf("\n\t");
     52             idx+=1;
     53         }
     54     }
     55 
     56     /* do we want to see an additionally hexdump ? */
     57     if (vflag> 1)
     58         print_unknown_data(pptr,"\n\t",len);
     59 
     60     return;
     61 
     62 trunc:
     63     printf("[|sip]");
     64 }
     65