OpenVAS Scanner  6.0.1
Data Structures | Macros | Functions
pcap.c File Reference
#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...
 

Functions

struct interface_infogetinterfaces (int *howmany)
 
struct interface_infov6_getinterfaces (int *howmany)
 
int getipv6routes (struct myroute *myroutes, int *numroutes)
 
static void ipv6addrmask (struct in6_addr *in6addr, int mask)
 
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)
 
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...
 

Macro Definition Documentation

◆ G_LOG_DOMAIN

#define G_LOG_DOMAIN   "lib misc"

GLib logging domain.

◆ MAXROUTES

#define MAXROUTES   1024

Function Documentation

◆ get_datalink_size()

int get_datalink_size ( int  datalink)

◆ getinterfaces()

struct interface_info * getinterfaces ( int *  howmany)
Parameters
[out]howmanyReturn location for the number of interfaces found (might be NULL).

◆ getipv4routes()

int getipv4routes ( struct myroute myroutes,
int *  numroutes 
)

◆ getipv6routes()

int getipv6routes ( struct myroute myroutes,
int *  numroutes 
)

◆ ipaddr2devname()

int ipaddr2devname ( char *  dev,
int  sz,
struct in_addr *  addr 
)

◆ ipv6addrmask()

static void ipv6addrmask ( struct in6_addr *  in6addr,
int  mask 
)
static

◆ islocalhost()

int islocalhost ( struct in_addr *  addr)

Tests whether a packet sent to IP is LIKELY to route through the kernel localhost interface.

◆ routethrough()

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 :(

◆ v6_getinterfaces()

struct interface_info * v6_getinterfaces ( int *  howmany)

◆ v6_getsourceip()

int v6_getsourceip ( struct in6_addr *  src,
struct in6_addr *  dst 
)

◆ v6_ipaddr2devname()

int v6_ipaddr2devname ( char *  dev,
int  sz,
struct in6_addr *  addr 
)

◆ v6_is_local_ip()

int v6_is_local_ip ( struct in6_addr *  addr)

◆ v6_islocalhost()

int v6_islocalhost ( struct in6_addr *  addr)

Tests whether a packet sent to IP is LIKELY to route through the kernel localhost interface.

◆ v6_routethrough()

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 :(