Greenbone Vulnerability Management Libraries 22.18.1
|
GVM Networking related API. More...
Go to the source code of this file.
Data Structures | |
struct | range |
A port range. More... | |
Typedefs | |
typedef struct range | range_t |
Enumerations | |
enum | port_protocol_t { PORT_PROTOCOL_TCP = 0 , PORT_PROTOCOL_UDP = 1 , PORT_PROTOCOL_OTHER = 2 } |
Possible port types. More... | |
Functions | |
int | gvm_source_iface_init (const char *) |
Initializes the source network interface name and related information. | |
int | gvm_source_iface_is_set (void) |
Check if global_source global_source_iface is set. | |
int | gvm_source_set_socket (int, int, int) |
Binds a socket to use the global source address. | |
void | gvm_source_addr (void *) |
Gives the source IPv4 address. | |
void | gvm_source_addr6 (void *) |
Gives the source IPv6 address. | |
void | gvm_source_addr_as_addr6 (struct in6_addr *) |
Gives the source IPv4 mapped as an IPv6 address. eg. 192.168.20.10 would map to ::ffff:192.168.20.10. | |
char * | gvm_source_addr_str (void) |
Gives the source IPv4 address in string format. | |
char * | gvm_source_addr6_str (void) |
Gives the source IPv6 address in string format. | |
void | ipv4_as_ipv6 (const struct in_addr *, struct in6_addr *) |
Maps an IPv4 address as an IPv6 address. eg. 192.168.10.20 would map to ::ffff:192.168.10.20. | |
void | addr6_to_str (const struct in6_addr *, char *) |
Stringifies an IP address. | |
char * | addr6_as_str (const struct in6_addr *) |
Stringifies an IP address. | |
void | sockaddr_as_str (const struct sockaddr_storage *, char *) |
Convert an IP address to string format. | |
int | gvm_resolve (const char *, void *, int) |
Resolves a hostname to an IPv4 or IPv6 address. | |
GSList * | gvm_resolve_list (const char *) |
Returns a list of addresses that a hostname resolves to. | |
int | gvm_resolve_as_addr6 (const char *, struct in6_addr *) |
Resolves a hostname to an IPv4-mapped IPv6 or IPv6 address. | |
int | validate_port_range (const char *) |
Validate a port range string. | |
array_t * | port_range_ranges (const char *) |
Create a range array from a port_range string. | |
int | port_in_port_ranges (int, port_protocol_t, array_t *) |
Checks if a port num is in port ranges array. | |
int | ipv6_is_enabled (void) |
Checks if IPv6 support is enabled. | |
gchar * | gvm_routethrough (struct sockaddr_storage *, struct sockaddr_storage *) |
Get Interface which should be used for routing to destination addr. | |
char * | gvm_get_outgoing_iface (struct sockaddr_storage *) |
Get the outgoing interface name for a given destination addr. | |
GVM Networking related API.
enum port_protocol_t |
char * addr6_as_str | ( | const struct in6_addr * | addr6 | ) |
Stringifies an IP address.
[in] | addr6 | IP address. |
void addr6_to_str | ( | const struct in6_addr * | addr6, |
char * | str ) |
Stringifies an IP address.
[in] | addr6 | IP address. |
[out] | str | Buffer to output IP. |
char * gvm_get_outgoing_iface | ( | struct sockaddr_storage * | target_addr | ) |
Get the outgoing interface name for a given destination addr.
A UDP socket is connected and its address retrieved. The address is the address of the interface of the outgoing interface. Its is determined by the kernel. We then search the list of interfaces for this address to determine the interface name. This method has the downside that if two interfaces with same addr are UP, a wrong interface might be returned because we can only retrieve the interface addr which was chosen by the kernel and nothing else (like e.g. interface number).
[in] | target_addr | Destination address. |
int gvm_resolve | ( | const char * | name, |
void * | dst, | ||
int | family ) |
Resolves a hostname to an IPv4 or IPv6 address.
[in] | name | Hostname to resolve. |
[out] | dst | Buffer to store resolved address. Size must be at least 4 bytes for AF_INET and 16 bytes for AF_INET6. |
[in] | family | Either AF_INET or AF_INET6. |
int gvm_resolve_as_addr6 | ( | const char * | name, |
struct in6_addr * | ip6 ) |
Resolves a hostname to an IPv4-mapped IPv6 or IPv6 address.
[in] | name | Hostname to resolve. |
[out] | ip6 | Buffer to store resolved address. |
GSList * gvm_resolve_list | ( | const char * | name | ) |
Returns a list of addresses that a hostname resolves to.
[in] | name | Hostname to resolve. |
gchar * gvm_routethrough | ( | struct sockaddr_storage * | storage_dest, |
struct sockaddr_storage * | storage_source ) |
Get Interface which should be used for routing to destination addr.
This function should be used sparingly as it parses /proc/net/route for every call.
[in] | storage_dest | Destination address. |
[out] | storage_source | Source address. Is set to either address of the interface we use or global source address if set. Only gets filled if storage_source != NULL. |
void gvm_source_addr | ( | void * | addr | ) |
Gives the source IPv4 address.
[out] | addr | Buffer of at least 4 bytes. |
void gvm_source_addr6 | ( | void * | addr6 | ) |
Gives the source IPv6 address.
[out] | addr6 | Buffer of at least 16 bytes. |
char * gvm_source_addr6_str | ( | void | ) |
Gives the source IPv6 address in string format.
void gvm_source_addr_as_addr6 | ( | struct in6_addr * | addr6 | ) |
Gives the source IPv4 mapped as an IPv6 address. eg. 192.168.20.10 would map to ::ffff:192.168.20.10.
[out] | addr6 | Buffer of at least 16 bytes. |
char * gvm_source_addr_str | ( | void | ) |
Gives the source IPv4 address in string format.
int gvm_source_iface_init | ( | const char * | iface | ) |
Initializes the source network interface name and related information.
[in] | iface | Name of network interface to use as source interface. |
int gvm_source_iface_is_set | ( | void | ) |
Check if global_source global_source_iface is set.
int gvm_source_set_socket | ( | int | socket, |
int | port, | ||
int | family ) |
Binds a socket to use the global source address.
[in] | socket | Socket to set source address for. |
[in] | port | Network port for socket. |
[in] | family | Family of socket. AF_INET or AF_INET6. |
void ipv4_as_ipv6 | ( | const struct in_addr * | ip4, |
struct in6_addr * | ip6 ) |
Maps an IPv4 address as an IPv6 address. eg. 192.168.10.20 would map to ::ffff:192.168.10.20.
[in] | ip4 | IPv4 address to map. |
[out] | ip6 | Buffer to store the IPv6 address. |
int ipv6_is_enabled | ( | void | ) |
Checks if IPv6 support is enabled.
int port_in_port_ranges | ( | int | pnum, |
port_protocol_t | ptype, | ||
array_t * | pranges ) |
Checks if a port num is in port ranges array.
[in] | pnum | Port number. |
[in] | ptype | Port type. |
[in] | pranges | Array of port ranges. |
array_t * port_range_ranges | ( | const char * | port_range | ) |
Create a range array from a port_range string.
[in] | port_range | Valid port_range string. |
void sockaddr_as_str | ( | const struct sockaddr_storage * | addr, |
char * | str ) |
Convert an IP address to string format.
[in] | addr | Address to convert. |
[out] | str | Buffer of INET6_ADDRSTRLEN size. |
int validate_port_range | ( | const char * | port_range | ) |
Validate a port range string.
Accepts ranges in form of "103,U:200-1024,3000-4000,T:3-4,U:7".
[in] | port_range | A port range. |