xsys: moved check_for_root into xsys instead of xio
[netsniff-ng.git] / src / xsys.h
bloba63f385824ebef2e9bc30ea2677747e52e5cfe9c
1 /*
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.
7 */
9 #ifndef XSYS_H
10 #define XSYS_H
12 #include <errno.h>
13 #include <sys/socket.h>
14 #include <unistd.h>
15 #include <linux/ethtool.h>
16 #include <linux/if.h>
17 #include <linux/wireless.h>
18 #include <termios.h>
20 #include "die.h"
22 extern int af_socket(int af);
23 extern int af_raw_socket(int af, int proto);
24 extern int pf_socket(void);
25 extern int wireless_bitrate(const char *ifname);
26 extern int wireless_essid(const char *ifname, char *essid);
27 extern int adjust_dbm_level(int dbm_val);
28 extern int dbm_to_mwatt(const int in);
29 extern int wireless_tx_power(const char *ifname);
30 extern int wireless_sigqual(const char *ifname, struct iw_statistics *stats);
31 extern int wireless_rangemax_sigqual(const char *ifname);
32 extern int ethtool_bitrate(const char *ifname);
33 extern int ethtool_drvinf(const char *ifname, struct ethtool_drvinfo *drvinf);
34 extern int device_bitrate(const char *ifname);
35 extern int device_mtu(const char *ifname);
36 extern int device_address(const char *ifname, int af,
37 struct sockaddr_storage *ss);
38 extern int device_irq_number(const char *ifname);
39 extern int device_bind_irq_to_cpu(int irq, int cpu);
40 extern void sock_print_net_stats(int sock);
41 extern int device_ifindex(const char *ifname);
42 extern short device_get_flags(const char *ifname);
43 extern void device_set_flags(const char *ifname, const short flags);
44 extern int set_nonblocking(int fd);
45 extern int set_nonblocking_sloppy(int fd);
46 extern int set_reuseaddr(int fd);
47 extern void register_signal(int signal, void (*handler)(int));
48 extern void register_signal_f(int signal, void (*handler)(int), int flags);
49 extern int get_tty_size(void);
50 extern void check_for_root_maybe_die(void);
52 static inline short enter_promiscuous_mode(char *ifname)
54 if (!strncmp("any", ifname, strlen("any")))
55 return 0;
57 short ifflags = device_get_flags(ifname);
58 device_set_flags(ifname, ifflags | IFF_PROMISC);
60 return ifflags;
63 static inline void leave_promiscuous_mode(char *ifname, short oldflags)
65 if (!strncmp("any", ifname, strlen("any")))
66 return;
68 device_set_flags(ifname, oldflags);
71 static inline int device_up(char *ifname)
73 if (!ifname)
74 return -EINVAL;
75 if (!strncmp("any", ifname, strlen("any")))
76 return 1;
77 return (device_get_flags(ifname) & IFF_UP) == IFF_UP;
80 static inline int device_running(char *ifname)
82 if (!ifname)
83 return -EINVAL;
84 if (!strncmp("any", ifname, strlen("any")))
85 return 1;
86 return (device_get_flags(ifname) & IFF_RUNNING) == IFF_RUNNING;
89 static inline int device_up_and_running(char *ifname)
91 if (!ifname)
92 return -EINVAL;
93 if (!strncmp("any", ifname, strlen("any")))
94 return 1;
95 return (device_get_flags(ifname) & (IFF_UP | IFF_RUNNING)) ==
96 (IFF_UP | IFF_RUNNING);
99 #define DEFAULT_TTY_SIZE 80
101 #define __reset "0"
102 #define __bold "1"
103 #define __black "30"
104 #define __red "31"
105 #define __green "32"
106 #define __yellow "33"
107 #define __blue "34"
108 #define __magenta "35"
109 #define __cyan "36"
110 #define __white "37"
111 #define __on_black "40"
112 #define __on_red "41"
113 #define __on_green "42"
114 #define __on_yellow "43"
115 #define __on_blue "44"
116 #define __on_magenta "45"
117 #define __on_cyan "46"
118 #define __on_white "47"
120 #define colorize_start(fore) "\033[" __##fore "m"
121 #define colorize_start_full(fore, back) "\033[" __##fore ";" __on_##back "m"
122 #define colorize_end() "\033[" __reset "m"
123 #define colorize_str(fore, text) \
124 colorize_start(fore) text colorize_end()
125 #define colorize_full_str(fore, back, text) \
126 colorize_start_full(fore, back) text colorize_end()
128 #endif /* XSYS_H */