Annotation of embedaddon/hping2/getlhs.c, revision 1.1
1.1 ! misho 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.10 2003/07/25 12:11:24 njombart 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>