File:  [ELWIX - Embedded LightWeight unIX -] / embedaddon / hping2 / getlhs.c
Revision 1.1.1.1 (vendor branch): download - view: text, annotated - select for diffs - revision graph
Tue Feb 21 22:11:37 2012 UTC (12 years, 3 months ago) by misho
Branches: hping2, MAIN
CVS tags: v2_0_0rc3p7, v2_0_0rc3p5, v2_0_0rc3p4, v2_0_0rc3p0, v2_0_0rc3, HEAD
hping2

    1: /* 
    2:  * $smu-mark$ 
    3:  * $name: getlhs.c$ 
    4:  * $author: Salvatore Sanfilippo <antirez@invece.org>$ 
    5:  * $copyright: Copyright (C) 1999 by Salvatore Sanfilippo$ 
    6:  * $license: This software is under GPL version 2 of license$ 
    7:  * $date: Fri Nov  5 11:55:47 MET 1999$ 
    8:  * $rev: 8$ 
    9:  */ 
   10: 
   11: /* $Id: getlhs.c,v 1.1.1.1 2012/02/21 22:11:37 misho Exp $ */
   12: 
   13: #include <string.h>
   14: 
   15: #include "hping2.h"
   16: #include "globals.h"
   17: 
   18: 
   19: #if (!defined OSTYPE_LINUX) || (defined FORCE_LIBPCAP)
   20: int get_linkhdr_size(char *ifname)
   21: {
   22: 	int dltype = pcap_datalink(pcapfp);
   23: 
   24: 	if (opt_debug)
   25: 		printf("DEBUG: dltype is %d\n", dltype);
   26: 
   27: 	switch(dltype) {
   28: 	case DLT_EN10MB:
   29: 	case DLT_IEEE802:
   30: 		linkhdr_size = 14;
   31: 		break;
   32: 	case DLT_SLIP:
   33: 	case DLT_SLIP_BSDOS:
   34: 		linkhdr_size = 16;
   35: 		break;
   36: 	case DLT_PPP:
   37: 	case DLT_NULL:
   38: #ifdef DLT_PPP_SERIAL
   39: 	case DLT_PPP_SERIAL:
   40: #endif
   41: #ifdef DLT_LOOP
   42: 	case DLT_LOOP:
   43: #endif
   44: 		linkhdr_size = 4;
   45: 		break;
   46: 	case DLT_PPP_BSDOS:
   47: 		linkhdr_size = 24;
   48: 		break;
   49: 	case DLT_FDDI:
   50: 		linkhdr_size = 13;
   51: 		break;
   52: 	case DLT_RAW:
   53: 		linkhdr_size = 0;
   54: 		break;
   55: 	case DLT_IEEE802_11:
   56: 		linkhdr_size = 14;
   57: 		break;
   58: 	case DLT_ATM_RFC1483:
   59: #ifdef DLT_CIP
   60: 	case DLT_CIP:
   61: #endif
   62: #ifdef DLT_ATM_CLIP
   63: 	case DLT_ATM_CLIP:
   64: #endif
   65: 		linkhdr_size = 8;
   66: 		break;
   67: #ifdef DLT_C_HDLC
   68: 	case DLT_C_HDLC:
   69: 		linkhdr_size = 4;
   70: 		break;
   71: #endif
   72: #ifdef DLT_LINUX_SLL
   73: 	case DLT_LINUX_SLL:
   74: #endif
   75: #ifdef DLT_LANE8023
   76: 	case DLT_LANE8023:
   77: #endif
   78: 		linkhdr_size = 16;
   79: 		break;
   80: 	default:
   81: 		return -1;
   82: 		break;
   83: 	}
   84: 	return 0;
   85: }
   86: #else /* Linux... */
   87: int get_linkhdr_size(char *ifname)
   88: {
   89: 
   90: 	if ( strstr(ifname, "ppp") ) { /* also works for ippp (ISDN) */
   91: 		linkhdr_size = PPPHDR_SIZE_LINUX;
   92: 		return 0;
   93: 	} else if ( strstr(ifname, "eth") ) {
   94: 		linkhdr_size = ETHHDR_SIZE;
   95: 		return 0;
   96: 	} else if (strstr(ifname, "ets")) {
   97: 		linkhdr_size = 0;
   98: 		return 0;
   99: 	} else if ( strstr(ifname, "lo") ) {
  100: 		linkhdr_size = LOHDR_SIZE;
  101: 		return 0;
  102: 	} else if (strstr(ifname, "atm")) {
  103: 		linkhdr_size = 0;
  104: 		return 0;
  105: 	} else if ( strstr(ifname, "wlan") ) {
  106: 		linkhdr_size = WLANHDR_SIZE;
  107: 		return 0;
  108: 	}
  109: 	else
  110: 		return -1;
  111: }
  112: #endif /* (!defined OSTYPE_LINUX) || (defined FORCE_LIBPCAP) */

FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>