12949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project/*
22949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project * Redistribution and use in source and binary forms, with or without
32949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project * modification, are permitted provided that: (1) source code
42949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project * distributions retain the above copyright notice and this paragraph
52949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project * in its entirety, and (2) distributions including binary code include
62949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project * the above copyright notice and this paragraph in its entirety in
72949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project * the documentation or other materials provided with the distribution.
82949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project * THIS SOFTWARE IS PROVIDED ``AS IS'' AND
92949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project * WITHOUT ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, WITHOUT
102949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project * LIMITATION, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
112949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project * FOR A PARTICULAR PURPOSE.
122949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project *
132949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project * Original code by Hannes Gredler (hannes@juniper.net)
142949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project */
152949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project
162949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#ifndef lint
172949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Projectstatic const char rcsid[] _U_ =
1853f17a9db278d33517d9888dd77848f554522a38JP Abgrall    "@(#) $Header: /tcpdump/master/tcpdump/print-sip.c,v 1.1 2004-07-27 17:04:20 hannes Exp $";
192949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#endif
202949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project
212949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#ifdef HAVE_CONFIG_H
222949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#include "config.h"
232949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#endif
242949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project
252949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#include <tcpdump-stdinc.h>
262949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project
272949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#include <stdio.h>
282949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#include <stdlib.h>
292949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project
302949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#include "interface.h"
312949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#include "extract.h"
322949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project
332949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#include "udp.h"
342949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project
352949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Projectvoid
362949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Projectsip_print(register const u_char *pptr, register u_int len)
372949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project{
382949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project    u_int idx;
392949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project
402949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project    printf("SIP, length: %u%s", len, vflag ? "\n\t" : "");
412949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project
422949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project    /* in non-verbose mode just lets print the protocol and length */
432949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project    if (vflag < 1)
442949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project        return;
452949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project
462949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project    for (idx = 0; idx < len; idx++) {
4753f17a9db278d33517d9888dd77848f554522a38JP Abgrall        TCHECK2(*(pptr+idx), 2);
482949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project        if (EXTRACT_16BITS(pptr+idx) != 0x0d0a) { /* linefeed ? */
492949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project            safeputchar(*(pptr+idx));
502949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project        } else {
512949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project            printf("\n\t");
522949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project            idx+=1;
532949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project        }
542949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project    }
552949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project
562949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project    /* do we want to see an additionally hexdump ? */
572949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project    if (vflag> 1)
582949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project        print_unknown_data(pptr,"\n\t",len);
592949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project
602949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project    return;
6153f17a9db278d33517d9888dd77848f554522a38JP Abgrall
6253f17a9db278d33517d9888dd77848f554522a38JP Abgralltrunc:
6353f17a9db278d33517d9888dd77848f554522a38JP Abgrall    printf("[|sip]");
642949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project}
65