2 * netsniff-ng - the packet sniffing beast
3 * By Daniel Borkmann <daniel@netsniff-ng.org>
4 * Copyright 2009, 2010 Daniel Borkmann.
5 * Copyright 2009, 2010 Emmanuel Roullit.
6 * Subject to the GPL, version 2.
13 #include <sys/socket.h>
15 #include <linux/ethtool.h>
17 #include <linux/wireless.h>
21 extern int af_socket(int af
);
22 extern int af_raw_socket(int af
, int proto
);
23 extern int pf_socket(void);
24 extern int wireless_bitrate(const char *ifname
);
25 extern int wireless_essid(const char *ifname
, char *essid
);
26 extern int adjust_dbm_level(int dbm_val
);
27 extern int dbm_to_mwatt(const int in
);
28 extern int wireless_tx_power(const char *ifname
);
29 extern int wireless_sigqual(const char *ifname
, struct iw_statistics
*stats
);
30 extern int wireless_rangemax_sigqual(const char *ifname
);
31 extern int ethtool_bitrate(const char *ifname
);
32 extern int ethtool_drvinf(const char *ifname
, struct ethtool_drvinfo
*drvinf
);
33 extern int device_bitrate(const char *ifname
);
34 extern int device_mtu(const char *ifname
);
35 extern int device_address(const char *ifname
, int af
,
36 struct sockaddr_storage
*ss
);
37 extern int device_irq_number(const char *ifname
);
38 extern int device_bind_irq_to_cpu(int irq
, int cpu
);
39 extern void sock_print_net_stats(int sock
);
40 extern int device_ifindex(const char *ifname
);
41 extern short device_get_flags(const char *ifname
);
42 extern void device_set_flags(const char *ifname
, const short flags
);
43 extern int set_nonblocking(int fd
);
44 extern int set_nonblocking_sloppy(int fd
);
45 extern int set_reuseaddr(int fd
);
48 static inline short enter_promiscuous_mode(char *ifname
)
50 if (!strncmp("any", ifname
, strlen("any")))
53 short ifflags
= device_get_flags(ifname
);
54 device_set_flags(ifname
, ifflags
| IFF_PROMISC
);
59 static inline void leave_promiscuous_mode(char *ifname
, short oldflags
)
61 if (!strncmp("any", ifname
, strlen("any")))
64 device_set_flags(ifname
, oldflags
);
67 static inline int device_up(char *ifname
)
71 if (!strncmp("any", ifname
, strlen("any")))
73 return (device_get_flags(ifname
) & IFF_UP
) == IFF_UP
;
76 static inline int device_running(char *ifname
)
80 if (!strncmp("any", ifname
, strlen("any")))
82 return (device_get_flags(ifname
) & IFF_RUNNING
) == IFF_RUNNING
;
85 static inline int device_up_and_running(char *ifname
)
89 if (!strncmp("any", ifname
, strlen("any")))
91 return (device_get_flags(ifname
) & (IFF_UP
| IFF_RUNNING
)) ==
92 (IFF_UP
| IFF_RUNNING
);