OpenVAS Scanner 21.4.1
network.h
Go to the documentation of this file.
1/* Portions Copyright (C) 2009-2021 Greenbone Networks GmbH
2 * Based on work Copyright (C) 1998 - 2007 Tenable Network Security, Inc.
3 *
4 * SPDX-License-Identifier: GPL-2.0-or-later
5 *
6 * This program is free software; you can redistribute it and/or
7 * modify it under the terms of the GNU General Public License
8 * as published by the Free Software Foundation; either version 2
9 * of the License, or (at your option) any later version.
10 *
11 * This program is distributed in the hope that it will be useful,
12 * but WITHOUT ANY WARRANTY; without even the implied warranty of
13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 * GNU General Public License for more details.
15 *
16 * You should have received a copy of the GNU General Public License
17 * along with this program; if not, write to the Free Software
18 * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
19 */
20
26#ifndef OPENVAS_NETWORK_H
27#define OPENVAS_NETWORK_H
28
29#include "scanneraux.h"
30
31#include <gnutls/gnutls.h>
32#include <gnutls/x509.h>
33#include <netinet/in.h> /* struct in_addr, struct in6_addr */
34#include <sys/select.h> /* at least for fd_set */
35
36/*
37 * Type of "transport layer", for encapsulated connections
38 * Only SSL is supported at this time.
39 * (Bad) examples of other layers could be SOCKS, httptunnel, icmptunnel,
40 * RMI over HTTP, DCOM over HTTP, TCP over TCP, etc.
41 */
42typedef enum openvas_encaps
43{
44 OPENVAS_ENCAPS_AUTO = 0, /* Request auto detection. */
46 OPENVAS_ENCAPS_SSLv23, /* Ask for compatibility options */
53 OPENVAS_ENCAPS_TLScustom, /* SSL/TLS using custom priorities. */
56
57#define IS_ENCAPS_SSL(x) \
58 ((x) >= OPENVAS_ENCAPS_SSLv23 && (x) <= OPENVAS_ENCAPS_TLScustom)
59
60/* Plugin specific network functions */
61int
62open_sock_tcp (struct script_infos *, unsigned int, int);
63
64int
65open_sock_option (struct script_infos *, unsigned int, int, int, int);
66
67int
68recv_line (int, char *, size_t);
69
70int
71nrecv (int, void *, int, int);
72
73int
74socket_close (int);
75
76int
77get_sock_infos (int sock, int *r_transport, void **r_tls_session);
78
79unsigned short *
80getpts (char *, int *);
81
82int
83open_stream_connection (struct script_infos *, unsigned int, int, int);
84
85int
86open_stream_connection_ext (struct script_infos *, unsigned int, int, int,
87 const char *);
88
89int
90open_stream_auto_encaps_ext (struct script_infos *, unsigned int port,
91 int timeout, int force);
92
93int
94write_stream_connection (int, void *buf, int n);
95
96int
97read_stream_connection (int, void *, int);
98
99int
100read_stream_connection_min (int, void *, int, int);
101
102int
103nsend (int, void *, int, int);
104
105void
107
108int
110
112
114
115/* Additional functions -- should not be used by the plugins */
116int
117open_sock_opt_hn (const char *, unsigned int, int, int, int);
118
119int
120openvas_SSL_init (void);
121
122int
123stream_set_buffer (int, int);
124
125int
127
128int
129stream_get_err (int);
130
131int
132openvas_register_connection (int s, void *ssl,
133 gnutls_certificate_credentials_t certcred,
134 openvas_encaps_t encaps);
135int
137
138int
140
141gnutls_session_t
143
144int
145stream_zero (fd_set *);
146
147int
148stream_set (int, fd_set *);
149
150int
151os_send (int, void *, int, int);
152
153int
154os_recv (int, void *, int, int);
155
156int
157fd_is_stream (int);
158
159int
160stream_set_timeout (int, int);
161
162int
164
165void
166socket_get_cert (int, void **, int *);
167
168int
170
171void
172socket_get_ssl_session_id (int, void **, size_t *);
173
174int
176
177int
179
180#endif
int openvas_SSL_init(void)
Initializes SSL support.
Definition: network.c:351
int openvas_get_socket_from_connection(int)
Definition: network.c:367
int stream_get_err(int)
Definition: network.c:145
int fd_is_stream(int)
Definition: network.c:1992
int read_stream_connection_min(int, void *, int, int)
Definition: network.c:1240
const char * get_encaps_name(openvas_encaps_t)
Definition: network.c:1575
void add_close_stream_connection_hook(int(*)(int))
int stream_zero(fd_set *)
openvas_encaps
Definition: network.h:43
@ OPENVAS_ENCAPS_SSLv3
Definition: network.h:48
@ OPENVAS_ENCAPS_TLScustom
Definition: network.h:53
@ OPENVAS_ENCAPS_TLSv12
Definition: network.h:51
@ OPENVAS_ENCAPS_TLSv1
Definition: network.h:49
@ OPENVAS_ENCAPS_MAX
Definition: network.h:54
@ OPENVAS_ENCAPS_IP
Definition: network.h:45
@ OPENVAS_ENCAPS_TLSv13
Definition: network.h:52
@ OPENVAS_ENCAPS_SSLv2
Definition: network.h:47
@ OPENVAS_ENCAPS_SSLv23
Definition: network.h:46
@ OPENVAS_ENCAPS_TLSv11
Definition: network.h:50
@ OPENVAS_ENCAPS_AUTO
Definition: network.h:44
int nsend(int, void *, int, int)
Definition: network.c:1431
enum openvas_encaps openvas_encaps_t
int os_send(int, void *, int, int)
Definition: network.c:2056
int os_recv(int, void *, int, int)
Definition: network.c:2075
int openvas_register_connection(int s, void *ssl, gnutls_certificate_credentials_t certcred, openvas_encaps_t encaps)
Definition: network.c:244
void socket_get_ssl_session_id(int, void **, size_t *)
Definition: network.c:820
const char * get_encaps_through(openvas_encaps_t)
Definition: network.c:1608
int get_sock_infos(int sock, int *r_transport, void **r_tls_session)
Definition: network.c:2096
int open_stream_auto_encaps_ext(struct script_infos *, unsigned int port, int timeout, int force)
Definition: network.c:1029
int open_sock_option(struct script_infos *, unsigned int, int, int, int)
Definition: network.c:1835
unsigned short * getpts(char *, int *)
Converts a string like "-100,200-1024,3000-4000,60000-" into an array.
Definition: network.c:2136
int stream_get_buffer_sz(int)
Definition: network.c:1998
int recv_line(int, char *, size_t)
Reads a text from the socket stream into the argument buffer, always.
Definition: network.c:1879
int socket_get_ssl_compression(int)
int stream_set_buffer(int, int)
Definition: network.c:2008
int nrecv(int, void *, int, int)
Definition: network.c:1470
int socket_negotiate_ssl(int, openvas_encaps_t, struct script_infos *)
Definition: network.c:686
int socket_get_ssl_version(int)
Definition: network.c:777
int socket_get_ssl_ciphersuite(int)
Definition: network.c:860
gnutls_session_t ovas_get_tlssession_from_connection(int)
Definition: network.c:387
int open_stream_connection_ext(struct script_infos *, unsigned int, int, int, const char *)
Definition: network.c:899
int write_stream_connection(int, void *buf, int n)
Definition: network.c:1425
int open_stream_connection(struct script_infos *, unsigned int, int, int)
Definition: network.c:1019
int open_sock_tcp(struct script_infos *, unsigned int, int)
Definition: network.c:1761
void socket_get_cert(int, void **, int *)
Definition: network.c:741
int socket_close(int)
Definition: network.c:1982
int open_sock_opt_hn(const char *, unsigned int, int, int, int)
Definition: network.c:1732
int read_stream_connection(int, void *, int)
Definition: network.c:1300
int close_stream_connection(int)
Definition: network.c:1547
int openvas_deregister_connection(int)
Definition: network.c:269
int stream_set_timeout(int, int)
Definition: network.c:1060
int stream_set(int, fd_set *)
Auxiliary structures for scanner.
Definition: scanneraux.h:42