xio: removed misc.{c,h}, placed function into xio.c
[netsniff-ng.git] / src / netdev.h
blob130fc38e6e6bbd5872a8877ba5b8866ad89be0f5
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 NETDEV_H
10 #define NETDEV_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>
19 #include "die.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")))
51 return 0;
53 short ifflags = device_get_flags(ifname);
54 device_set_flags(ifname, ifflags | IFF_PROMISC);
56 return ifflags;
59 static inline void leave_promiscuous_mode(char *ifname, short oldflags)
61 if (!strncmp("any", ifname, strlen("any")))
62 return;
64 device_set_flags(ifname, oldflags);
67 static inline int device_up(char *ifname)
69 if (!ifname)
70 return -EINVAL;
71 if (!strncmp("any", ifname, strlen("any")))
72 return 1;
73 return (device_get_flags(ifname) & IFF_UP) == IFF_UP;
76 static inline int device_running(char *ifname)
78 if (!ifname)
79 return -EINVAL;
80 if (!strncmp("any", ifname, strlen("any")))
81 return 1;
82 return (device_get_flags(ifname) & IFF_RUNNING) == IFF_RUNNING;
85 static inline int device_up_and_running(char *ifname)
87 if (!ifname)
88 return -EINVAL;
89 if (!strncmp("any", ifname, strlen("any")))
90 return 1;
91 return (device_get_flags(ifname) & (IFF_UP | IFF_RUNNING)) ==
92 (IFF_UP | IFF_RUNNING);
95 #endif /* NETDEV_H */