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.
16 #include <sys/socket.h>
18 #include <linux/ethtool.h>
20 #include <linux/wireless.h>
25 #define DEFAULT_TTY_SIZE 80
34 #define __magenta "35"
37 #define __on_black "40"
39 #define __on_green "42"
40 #define __on_yellow "43"
41 #define __on_blue "44"
42 #define __on_magenta "45"
43 #define __on_cyan "46"
44 #define __on_white "47"
46 #define colorize_start(fore) "\033[" __##fore "m"
47 #define colorize_start_full(fore, back) "\033[" __##fore ";" __on_##back "m"
48 #define colorize_end() "\033[" __reset "m"
49 #define colorize_str(fore, text) \
50 colorize_start(fore) text colorize_end()
51 #define colorize_full_str(fore, back, text) \
52 colorize_start_full(fore, back) text colorize_end()
55 # define POLLRDNORM 0x0040
58 # define POLLWRNORM 0x0100
61 # define POLLRDHUP 0x2000
63 #define POLL_NEXT_PKT 0
64 #define POLL_MOVE_OUT 1
66 static inline void prepare_polling(int sock
, struct pollfd
*pfd
)
68 memset(pfd
, 0, sizeof(*pfd
));
71 pfd
->events
= POLLIN
| POLLRDNORM
| POLLERR
;
74 extern int af_socket(int af
);
75 extern int af_raw_socket(int af
, int proto
);
76 extern int pf_socket(void);
77 extern int wireless_bitrate(const char *ifname
);
78 extern int wireless_essid(const char *ifname
, char *essid
);
79 extern int adjust_dbm_level(int dbm_val
);
80 extern int dbm_to_mwatt(const int in
);
81 extern int wireless_tx_power(const char *ifname
);
82 extern int wireless_sigqual(const char *ifname
, struct iw_statistics
*stats
);
83 extern int wireless_rangemax_sigqual(const char *ifname
);
84 extern int ethtool_bitrate(const char *ifname
);
85 extern int ethtool_drvinf(const char *ifname
, struct ethtool_drvinfo
*drvinf
);
86 extern int device_bitrate(const char *ifname
);
87 extern int device_mtu(const char *ifname
);
88 extern int device_address(const char *ifname
, int af
,
89 struct sockaddr_storage
*ss
);
90 extern int device_irq_number(const char *ifname
);
91 extern int device_bind_irq_to_cpu(int irq
, int cpu
);
92 extern void sock_print_net_stats(int sock
);
93 extern int device_ifindex(const char *ifname
);
94 extern short device_get_flags(const char *ifname
);
95 extern void device_set_flags(const char *ifname
, const short flags
);
96 extern int set_nonblocking(int fd
);
97 extern int set_nonblocking_sloppy(int fd
);
98 extern int set_reuseaddr(int fd
);
99 extern void register_signal(int signal
, void (*handler
)(int));
100 extern void register_signal_f(int signal
, void (*handler
)(int), int flags
);
101 extern int get_tty_size(void);
102 extern void check_for_root_maybe_die(void);
103 extern short enter_promiscuous_mode(char *ifname
);
104 extern void leave_promiscuous_mode(char *ifname
, short oldflags
);
105 extern int device_up(char *ifname
);
106 extern int device_running(char *ifname
);
107 extern int device_up_and_running(char *ifname
);
108 extern int poll_error_maybe_die(int sock
, struct pollfd
*pfd
);