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>