OpenVAS Scanner 21.4.1
|
#include "bpf_share.h"
#include "network.h"
#include "pcap_openvas.h"
#include "support.h"
#include <arpa/inet.h>
#include <gvm/base/logging.h>
#include <gvm/base/networking.h>
#include <ifaddrs.h>
#include <net/if.h>
#include <netdb.h>
#include <netinet/in.h>
#include <pcap.h>
#include <resolv.h>
#include <stdlib.h>
#include <string.h>
#include <sys/ioctl.h>
#include <sys/param.h>
#include <sys/types.h>
#include <unistd.h>
Data Structures | |
struct | interface_info |
struct | myroute |
Macros | |
#define | MAXROUTES 1024 |
#define | G_LOG_DOMAIN "lib misc" |
GLib logging domain. More... | |
#define | MAX_IFACE_NAME_LEN 64 |
Maximum length of an interface's name. More... | |
Functions | |
struct interface_info * | getinterfaces (int *howmany) |
struct interface_info * | v6_getinterfaces (int *howmany) |
int | getipv6routes (struct myroute *myroutes, int *numroutes) |
Get the IPv6 routes and number of routes. More... | |
int | ipv6_prefix_to_mask (unsigned prefix, struct in6_addr *mask) |
Generate an ipv6 mask from the given ipv6 prefix. More... | |
int | v6_is_local_ip (struct in6_addr *addr) |
int | v6_ipaddr2devname (char *dev, int sz, struct in6_addr *addr) |
int | ipaddr2devname (char *dev, int sz, struct in_addr *addr) |
int | v6_islocalhost (struct in6_addr *addr) |
Tests whether a packet sent to IP is LIKELY to route through the kernel localhost interface. More... | |
int | islocalhost (struct in_addr *addr) |
Tests whether a packet sent to IP is LIKELY to route through the kernel localhost interface. More... | |
int | get_datalink_size (int datalink) |
int | v6_getsourceip (struct in6_addr *src, struct in6_addr *dst) |
int | getipv4routes (struct myroute *myroutes, int *numroutes) |
Get the ipv4 routes and number of routes. More... | |
char * | v6_routethrough (struct in6_addr *dest, struct in6_addr *source) |
An awesome function to determine what interface a packet to a given destination should be routed through. More... | |
char * | routethrough (struct in_addr *dest, struct in_addr *source) |
An awesome function to determine what interface a packet to a given destination should be routed through. More... | |
#define G_LOG_DOMAIN "lib misc" |
GLib logging domain.
#define MAX_IFACE_NAME_LEN 64 |
Maximum length of an interface's name.
#define MAXROUTES 1024 |
int get_datalink_size | ( | int | datalink | ) |
struct interface_info * getinterfaces | ( | int * | howmany | ) |
[out] | howmany | Return location for the number of interfaces found (might be NULL). |
int getipv4routes | ( | struct myroute * | myroutes, |
int * | numroutes | ||
) |
Get the ipv4 routes and number of routes.
This function is only used for getting the ipv4 routes in v6_routethrough(). routethrough() overwrites the global myroutes struct with a local version and uses its own logic for getting the routes from /proc/net/route.
[out] | myroutes | Array of routes. |
[out] | numroutes | Number of routes in myroutes. |
int getipv6routes | ( | struct myroute * | myroutes, |
int * | numroutes | ||
) |
Get the IPv6 routes and number of routes.
This function parses the /proc/net/ipv6_route file into an array of myroute structs.
[out] | myroutes | Array of routes. |
[out] | numroutes | Number of routes in myroutes. |
int ipaddr2devname | ( | char * | dev, |
int | sz, | ||
struct in_addr * | addr | ||
) |
int ipv6_prefix_to_mask | ( | unsigned | prefix, |
struct in6_addr * | mask | ||
) |
Generate an ipv6 mask from the given ipv6 prefix.
This function is a copy of the function ipv6_prefix_to_mask() obtained from GPL-2.0 licensed https://gitlab.com/ipcalc/ipcalc/-/blob/master/ipcalc.c.
[in] | prefix | The ipv6 prefix. |
[out] | mask | The mask corresponding to the prefix. |
int islocalhost | ( | struct in_addr * | addr | ) |
Tests whether a packet sent to IP is LIKELY to route through the kernel localhost interface.
char * routethrough | ( | struct in_addr * | dest, |
struct in_addr * | source | ||
) |
An awesome function to determine what interface a packet to a given destination should be routed through.
It returns NULL if no appropriate interface is found, otherwise it returns the device name and fills in the source parameter. Some of the stuff is from Stevens' Unix Network Programming V2. He had an easier suggestion for doing this (in the book), but it isn't portable :(
struct interface_info * v6_getinterfaces | ( | int * | howmany | ) |
int v6_getsourceip | ( | struct in6_addr * | src, |
struct in6_addr * | dst | ||
) |
int v6_ipaddr2devname | ( | char * | dev, |
int | sz, | ||
struct in6_addr * | addr | ||
) |
int v6_is_local_ip | ( | struct in6_addr * | addr | ) |
int v6_islocalhost | ( | struct in6_addr * | addr | ) |
Tests whether a packet sent to IP is LIKELY to route through the kernel localhost interface.
char * v6_routethrough | ( | struct in6_addr * | dest, |
struct in6_addr * | source | ||
) |
An awesome function to determine what interface a packet to a given destination should be routed through.
It returns NULL if no appropriate interface is found, otherwise it returns the device name and fills in the source parameter. Some of the stuff is from Stevens' Unix Network Programming V2. He had an easier suggestion for doing this (in the book), but it isn't portable :(