pkt_buff: minor: another minor update
[netsniff-ng.git] / src / xsys.h
blob113add5eb63566ae7182fbc7779309e246a8030c
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 #define _GNU_SOURCE
13 #include <poll.h>
14 #include <sys/poll.h>
15 #include <errno.h>
16 #include <sys/socket.h>
17 #include <unistd.h>
18 #include <linux/ethtool.h>
19 #include <linux/if.h>
20 #include <linux/wireless.h>
21 #include <termios.h>
22 #include <sched.h>
23 #include <sys/resource.h>
24 #include <sys/time.h>
26 #include "die.h"
28 #define DEFAULT_TTY_SIZE 80
30 #define __reset "0"
31 #define __bold "1"
32 #define __black "30"
33 #define __red "31"
34 #define __green "32"
35 #define __yellow "33"
36 #define __blue "34"
37 #define __magenta "35"
38 #define __cyan "36"
39 #define __white "37"
40 #define __on_black "40"
41 #define __on_red "41"
42 #define __on_green "42"
43 #define __on_yellow "43"
44 #define __on_blue "44"
45 #define __on_magenta "45"
46 #define __on_cyan "46"
47 #define __on_white "47"
49 #define colorize_start(fore) "\033[" __##fore "m"
50 #define colorize_start_full(fore, back) "\033[" __##fore ";" __on_##back "m"
51 #define colorize_end() "\033[" __reset "m"
52 #define colorize_str(fore, text) \
53 colorize_start(fore) text colorize_end()
54 #define colorize_full_str(fore, back, text) \
55 colorize_start_full(fore, back) text colorize_end()
57 #ifndef POLLRDNORM
58 # define POLLRDNORM 0x0040
59 #endif
60 #ifndef POLLWRNORM
61 # define POLLWRNORM 0x0100
62 #endif
63 #ifndef POLLRDHUP
64 # define POLLRDHUP 0x2000
65 #endif
66 #define POLL_NEXT_PKT 0
67 #define POLL_MOVE_OUT 1
69 static inline void prepare_polling(int sock, struct pollfd *pfd)
71 memset(pfd, 0, sizeof(*pfd));
72 pfd->fd = sock;
73 pfd->revents = 0;
74 pfd->events = POLLIN | POLLRDNORM | POLLERR;
77 static inline int get_default_sched_policy(void)
79 return SCHED_FIFO;
82 static inline int get_default_sched_prio(void)
84 return sched_get_priority_max(get_default_sched_policy());
87 static inline int get_number_cpus(void)
89 return sysconf(_SC_NPROCESSORS_CONF);
92 static inline int get_number_cpus_online(void)
94 return sysconf(_SC_NPROCESSORS_ONLN);
97 static inline int get_default_proc_prio(void)
99 return -20;
102 extern int af_socket(int af);
103 extern int af_raw_socket(int af, int proto);
104 extern int pf_socket(void);
105 extern int wireless_bitrate(const char *ifname);
106 extern int adjust_dbm_level(int dbm_val);
107 extern int wireless_sigqual(const char *ifname, struct iw_statistics *stats);
108 extern int wireless_rangemax_sigqual(const char *ifname);
109 extern int ethtool_bitrate(const char *ifname);
110 extern int ethtool_drvinf(const char *ifname, struct ethtool_drvinfo *drvinf);
111 extern int device_bitrate(const char *ifname);
112 extern int device_mtu(const char *ifname);
113 extern int device_address(const char *ifname, int af,
114 struct sockaddr_storage *ss);
115 extern int device_irq_number(const char *ifname);
116 extern int device_bind_irq_to_cpu(int irq, int cpu);
117 extern void sock_print_net_stats(int sock);
118 extern int device_ifindex(const char *ifname);
119 extern short device_get_flags(const char *ifname);
120 extern void device_set_flags(const char *ifname, const short flags);
121 extern int set_nonblocking(int fd);
122 extern int set_nonblocking_sloppy(int fd);
123 extern int set_reuseaddr(int fd);
124 extern void register_signal(int signal, void (*handler)(int));
125 extern void register_signal_f(int signal, void (*handler)(int), int flags);
126 extern int get_tty_size(void);
127 extern void check_for_root_maybe_die(void);
128 extern short enter_promiscuous_mode(char *ifname);
129 extern void leave_promiscuous_mode(char *ifname, short oldflags);
130 extern int device_up(char *ifname);
131 extern int device_running(char *ifname);
132 extern int device_up_and_running(char *ifname);
133 extern int poll_error_maybe_die(int sock, struct pollfd *pfd);
134 extern int set_cpu_affinity(char *str, int inverted);
135 extern int set_proc_prio(int prio);
136 extern int set_sched_status(int policy, int priority);
137 extern void xusleep(const struct timespec *ts_delay);
138 extern void xusleep2(long usecs);
139 extern int xnanosleep(double seconds);
140 extern int set_timeout(struct timeval *timeval, unsigned int msec);
142 #endif /* XSYS_H */