Annotation of embedaddon/hping2/if_promisc.c, revision 1.1

1.1     ! misho       1: /* 
        !             2:  * $smu-mark$ 
        !             3:  * $name: if_promisc.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:48 MET 1999$ 
        !             8:  * $rev: 2$ 
        !             9:  */ 
        !            10: 
        !            11: #include <sys/types.h>
        !            12: #include <sys/ioctl.h>
        !            13: #include <string.h>
        !            14: #include <stdio.h>
        !            15: #include <netinet/in.h>
        !            16: #include <sys/socket.h>
        !            17: #include <net/if.h>
        !            18: 
        !            19: #include "hping2.h"
        !            20: #include "globals.h"
        !            21: 
        !            22: int if_promisc_on(int s)
        !            23: {
        !            24:        struct ifreq ifr;
        !            25: 
        !            26:        strlcpy(ifr.ifr_name, ifname, IFNAMSIZ);
        !            27:        if ( ioctl(s, SIOCGIFFLAGS, &ifr) == -1) {
        !            28:                perror("[open_sockpacket] ioctl(SIOCGIFFLAGS)");
        !            29:                return -1;
        !            30:        }
        !            31: 
        !            32:        if (!(ifr.ifr_flags & IFF_PROMISC)) {
        !            33:                ifr.ifr_flags |= IFF_PROMISC;
        !            34:                if ( ioctl(s, SIOCSIFFLAGS, &ifr) == -1) {
        !            35:                        perror("[open_sockpacket] ioctl(SIOCSIFFLAGS)");
        !            36:                        return -1;
        !            37:                }
        !            38:        }
        !            39:        return 0;
        !            40: }
        !            41: 
        !            42: int if_promisc_off(int s)
        !            43: {
        !            44:        struct ifreq ifr;
        !            45: 
        !            46:        strlcpy(ifr.ifr_name, ifname, IFNAMSIZ);
        !            47:        if ( ioctl(s, SIOCGIFFLAGS, &ifr) == -1) {
        !            48:                perror("[open_sockpacket] ioctl(SIOCGIFFLAGS)");
        !            49:                return -1;
        !            50:        }
        !            51: 
        !            52:        if (ifr.ifr_flags & IFF_PROMISC) {
        !            53:                ifr.ifr_flags ^= IFF_PROMISC;
        !            54:                if ( ioctl(s, SIOCSIFFLAGS, &ifr) == -1) {
        !            55:                        perror("[open_sockpacket] ioctl(SIOCSIFFLAGS)");
        !            56:                        return -1;
        !            57:                }
        !            58:        }
        !            59:        return 0;
        !            60: }

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