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>