diff options
Diffstat (limited to 'print-sip.c')
-rw-r--r-- | print-sip.c | 64 |
1 files changed, 64 insertions, 0 deletions
diff --git a/print-sip.c b/print-sip.c new file mode 100644 index 0000000..c5bc853 --- /dev/null +++ b/print-sip.c @@ -0,0 +1,64 @@ +/* + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that: (1) source code + * distributions retain the above copyright notice and this paragraph + * in its entirety, and (2) distributions including binary code include + * the above copyright notice and this paragraph in its entirety in + * the documentation or other materials provided with the distribution. + * THIS SOFTWARE IS PROVIDED ``AS IS'' AND + * WITHOUT ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, WITHOUT + * LIMITATION, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS + * FOR A PARTICULAR PURPOSE. + * + * Original code by Hannes Gredler (hannes@juniper.net) + */ + +#ifndef lint +static const char rcsid[] _U_ = + "@(#) $Header: /tcpdump/master/tcpdump/print-sip.c,v 1.1 2004-07-27 17:04:20 hannes Exp $"; +#endif + +#ifdef HAVE_CONFIG_H +#include "config.h" +#endif + +#include <tcpdump-stdinc.h> + +#include <stdio.h> +#include <stdlib.h> + +#include "interface.h" +#include "extract.h" + +#include "udp.h" + +void +sip_print(register const u_char *pptr, register u_int len) +{ + u_int idx; + + printf("SIP, length: %u%s", len, vflag ? "\n\t" : ""); + + /* in non-verbose mode just lets print the protocol and length */ + if (vflag < 1) + return; + + for (idx = 0; idx < len; idx++) { + TCHECK2(*(pptr+idx), 2); + if (EXTRACT_16BITS(pptr+idx) != 0x0d0a) { /* linefeed ? */ + safeputchar(*(pptr+idx)); + } else { + printf("\n\t"); + idx+=1; + } + } + + /* do we want to see an additionally hexdump ? */ + if (vflag> 1) + print_unknown_data(pptr,"\n\t",len); + + return; + +trunc: + printf("[|sip]"); +} |