12949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project/* $OpenBSD: print-enc.c,v 1.7 2002/02/19 19:39:40 millert Exp $ */ 22949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project 32949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project/* 42949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project * Copyright (c) 1990, 1991, 1993, 1994, 1995, 1996 52949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project * The Regents of the University of California. All rights reserved. 62949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project * 72949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project * Redistribution and use in source and binary forms, with or without 82949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project * modification, are permitted provided that: (1) source code distributions 92949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project * retain the above copyright notice and this paragraph in its entirety, (2) 102949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project * distributions including binary code include the above copyright notice and 112949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project * this paragraph in its entirety in the documentation or other materials 122949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project * provided with the distribution, and (3) all advertising materials mentioning 132949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project * features or use of this software display the following acknowledgement: 142949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project * ``This product includes software developed by the University of California, 152949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project * Lawrence Berkeley Laboratory and its contributors.'' Neither the name of 162949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project * the University nor the names of its contributors may be used to endorse 172949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project * or promote products derived from this software without specific prior 182949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project * written permission. 192949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR IMPLIED 202949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project * WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF 212949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. 222949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project */ 232949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project 242949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#ifndef lint 252949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Projectstatic const char rcsid[] _U_ = 262949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project "@(#) $Header: /tcpdump/master/tcpdump/print-enc.c,v 1.4 2005/04/06 21:32:39 mcr Exp $ (LBL)"; 272949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#endif 282949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project 292949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#ifdef HAVE_CONFIG_H 302949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#include "config.h" 312949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#endif 322949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project 332949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#include <tcpdump-stdinc.h> 342949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project 352949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#include <pcap.h> 362949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project 372949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#include "interface.h" 382949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#include "addrtoname.h" 392949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project 402949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#include "enc.h" 412949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project 422949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#define ENC_PRINT_TYPE(wh, xf, nam) \ 432949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project if ((wh) & (xf)) { \ 442949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project printf("%s%s", nam, (wh) == (xf) ? "): " : ","); \ 452949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project (wh) &= ~(xf); \ 462949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project } 472949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project 482949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Projectu_int 492949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Projectenc_if_print(const struct pcap_pkthdr *h, register const u_char *p) 502949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project{ 512949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project register u_int length = h->len; 522949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project register u_int caplen = h->caplen; 532949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project int flags; 542949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project const struct enchdr *hdr; 552949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project 562949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project if (caplen < ENC_HDRLEN) { 572949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project printf("[|enc]"); 582949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project goto out; 592949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project } 602949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project 612949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project hdr = (struct enchdr *)p; 622949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project flags = hdr->flags; 632949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project if (flags == 0) 642949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project printf("(unprotected): "); 652949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project else 662949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project printf("("); 672949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project ENC_PRINT_TYPE(flags, M_AUTH, "authentic"); 682949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project ENC_PRINT_TYPE(flags, M_CONF, "confidential"); 692949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project /* ENC_PRINT_TYPE(flags, M_TUNNEL, "tunnel"); */ 702949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project printf("SPI 0x%08x: ", (u_int32_t)ntohl(hdr->spi)); 712949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project 722949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project length -= ENC_HDRLEN; 732949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project /* XXX - use the address family */ 742949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project ip_print(gndo, p + ENC_HDRLEN, length); 752949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project 762949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Projectout: 772949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project return (ENC_HDRLEN); 782949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project} 792949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project 802949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project 812949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project/* 822949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project * Local Variables: 832949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project * c-style: whitesmith 842949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project * c-basic-offset: 8 852949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project * End: 862949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project */ 87