30 #include <arpa/inet.h> 32 #include <netinet/in.h> 36 #include "../misc/network.h" 37 #include "../base/openvas_networking.h" 38 #include "../misc/plugutils.h" 39 #include "../misc/pcap_openvas.h" 62 retc->
size = strlen (hostname);
178 struct in6_addr in6addr;
179 struct in6_addr src6;
186 struct in6_addr addr;
189 if (IN6_IS_ADDR_V4MAPPED (ia))
194 retc->size = strlen (retc->x.str_val);
202 memcpy (&src6, ia,
sizeof (
struct in6_addr));
206 if (
err && !IN6_ARE_ADDR_EQUAL (&src6, &in6addr_any))
209 retc->size = strlen (retc->x.str_val);
214 hostname[
sizeof (hostname) - 1] =
'\0';
215 gethostname (hostname,
sizeof (hostname) - 1);
219 retc->size = strlen (retc->x.str_val);
235 hostname = g_malloc0 (256);
236 gethostname (hostname, 255);
239 retc->
size = strlen (hostname);
293 retc->
size = strlen (s);
311 char *hn[2], **names[2];
312 struct in_addr ia, *a[2];
313 int i, j, n[2], names_nb[2], flag;
316 for (i = 0; i < 2; i++)
321 nasl_perror (lexic,
"same_host needs two parameters!\n");
324 if (strlen (hn[i]) >= 256)
326 nasl_perror (lexic,
"same_host(): Too long hostname !\n");
330 for (i = 0; i < 2; i++)
332 if (!inet_aton (hn[i], &ia))
334 h = gethostbyname (hn[i]);
337 nasl_perror (lexic,
"same_host: %s does not resolve\n", hn[i]);
342 names[i] = g_malloc0 (
sizeof (
char *));
343 names[i][0] = g_strdup (hn[i]);
348 for (names_nb[i] = 0; h->h_aliases[names_nb[i]] != NULL;
352 names[i] = g_malloc0 (
sizeof (
char *) * names_nb[i]);
353 names[i][0] = g_strdup (h->h_name);
354 for (j = 1; j < names_nb[i]; j++)
355 names[i][j] = g_strdup (h->h_aliases[j - 1]);
358 for (n[i] = 0; ((
struct in_addr **) h->h_addr_list)[n[i]] != NULL;
361 a[i] = g_malloc0 (h->h_length * n[i]);
362 for (j = 0; j < n[i]; j++)
363 a[i][j] = *((
struct in_addr **) h->h_addr_list)[j];
369 h = gethostbyaddr ((
const char *) &ia,
sizeof (ia), AF_INET);
374 a[i] = g_malloc0 (
sizeof (
struct in_addr));
375 memcpy (a[i], &ia,
sizeof (
struct in_addr));
380 for (names_nb[i] = 0; h->h_aliases[names_nb[i]] != NULL;
384 names[i] = g_malloc0 (
sizeof (
char *) * names_nb[i]);
385 names[i][0] = g_strdup (h->h_name);
386 for (j = 1; j < names_nb[i]; j++)
387 names[i][j] = g_strdup (h->h_aliases[j - 1]);
390 for (n[i] = 0; ((
struct in_addr **) h->h_addr_list)[n[i]] != NULL;
393 a[i] = g_malloc0 (h->h_length * n[i]);
394 for (j = 0; j < n[i]; j++)
395 a[i][j] = *((
struct in_addr **) h->h_addr_list)[j];
400 for (i = 0; i < n[0] && !flag; i++)
401 for (j = 0; j < n[1] && !flag; j++)
402 if (a[0][i].s_addr == a[1][j].s_addr)
408 for (i = 0; i < names_nb[0] && !flag; i++)
409 for (j = 0; j < names_nb[1] && !flag; j++)
410 if (strcmp (names[0][i], names[1][j]) == 0)
418 for (i = 0; i < 2; i++)
422 for (i = 0; i < 2; i++)
424 for (j = 0; j < names_nb[i]; j++)
425 g_free (names[i][j]);
437 struct in6_addr *addr;
448 if (IN6_IS_ADDR_V4MAPPED (addr) == 1)
int v6_islocalhost(struct in6_addr *addr)
Tests whether a packet sent to IP is LIKELY to route through the kernel localhost interface...
void openvas_source_addr6(void *addr6)
Gives the source IPv6 address.
const char * get_encaps_name(openvas_encaps_t code)
int host_get_port_state(struct arglist *plugdata, int portnum)
tree_cell * get_port_state(lex_ctxt *lexic)
int v6_getsourceip(struct in6_addr *src, struct in6_addr *dst)
tree_cell * nasl_target_is_ipv6(lex_ctxt *lexic)
tree_cell * nasl_islocalnet(lex_ctxt *lexic)
char * plug_get_host_fqdn(struct arglist *desc)
long int get_int_local_var_by_name(lex_ctxt *, const char *, int)
tree_cell * alloc_typed_cell(int typ)
tree_cell * get_hostname(lex_ctxt *lexic)
tree_cell * nasl_this_host(lex_ctxt *lexic)
tree_cell * nasl_islocalhost(lex_ctxt *lexic)
char * addr6_as_str(const struct in6_addr *addr6)
struct in6_addr * plug_get_host_ip(struct arglist *desc)
int v6_is_local_ip(struct in6_addr *addr)
long int get_int_var_by_num(lex_ctxt *, int, int)
void nasl_perror(lex_ctxt *lexic, char *msg,...)
char * get_str_var_by_num(lex_ctxt *, int)
tree_cell * get_host_ip(lex_ctxt *lexic)
tree_cell * nasl_same_host(lex_ctxt *lexic)
tree_cell * nasl_this_host_name(lex_ctxt *lexic)
tree_cell * get_host_open_port(lex_ctxt *lexic)
tree_cell * alloc_tree_cell(int lnb, char *s)
int host_get_port_state_udp(struct arglist *plugdata, int portnum)
int openvas_resolve_as_addr6(const char *name, struct in6_addr *ip6)
Resolves a hostname to an IPv4-mapped IPv6 or IPv6 address.
void openvas_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.
unsigned int plug_get_host_open_port(struct arglist *desc)
int openvas_source_iface_is_set(void)
struct arglist * script_infos
int plug_get_port_transport(struct arglist *args, int port)
tree_cell * get_udp_port_state(lex_ctxt *lexic)
tree_cell * get_port_transport(lex_ctxt *lexic)
Return the encapsulation mode of a port.