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