NeoMutt  2021-02-05-666-ge300cd
Teaching an old dog new tricks
DOXYGEN
tunnel.c File Reference

Support for network tunnelling. More...

#include "config.h"
#include <errno.h>
#include <fcntl.h>
#include <stdbool.h>
#include <string.h>
#include <sys/wait.h>
#include <time.h>
#include <unistd.h>
#include "private.h"
#include "mutt/lib.h"
#include "config/lib.h"
#include "core/lib.h"
#include "lib.h"
+ Include dependency graph for tunnel.c:

Go to the source code of this file.

Data Structures

struct  TunnelSockData
 A network tunnel (pair of sockets) More...
 

Functions

static int tunnel_socket_open (struct Connection *conn)
 Open a tunnel socket - Implements Connection::open() -. More...
 
static int tunnel_socket_read (struct Connection *conn, char *buf, size_t count)
 Read data from a tunnel socket - Implements Connection::read() -. More...
 
static int tunnel_socket_write (struct Connection *conn, const char *buf, size_t count)
 Write data to a tunnel socket - Implements Connection::write() -. More...
 
static int tunnel_socket_poll (struct Connection *conn, time_t wait_secs)
 Checks whether tunnel reads would block - Implements Connection::poll() -. More...
 
static int tunnel_socket_close (struct Connection *conn)
 Close a tunnel socket - Implements Connection::close() -. More...
 
void mutt_tunnel_socket_setup (struct Connection *conn)
 sets up tunnel connection functions More...
 

Detailed Description

Support for network tunnelling.

Authors
  • Manoj Kasichainula
  • Brendan Cully

This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.

You should have received a copy of the GNU General Public License along with this program. If not, see http://www.gnu.org/licenses/.

Definition in file tunnel.c.

Function Documentation

◆ mutt_tunnel_socket_setup()

void mutt_tunnel_socket_setup ( struct Connection conn)

sets up tunnel connection functions

Parameters
connConnection to assign functions to

Assign tunnel socket functions to the Connection conn.

Definition at line 233 of file tunnel.c.

234 {
235  conn->open = tunnel_socket_open;
236  conn->close = tunnel_socket_close;
237  conn->read = tunnel_socket_read;
238  conn->write = tunnel_socket_write;
239  conn->poll = tunnel_socket_poll;
240  /* Note we are using ssf as a boolean in this case. See the notes in
241  * conn/connection.h */
242  const bool c_tunnel_is_secure =
243  cs_subset_bool(NeoMutt->sub, "tunnel_is_secure");
244  if (c_tunnel_is_secure)
245  conn->ssf = 1;
246 }
bool cs_subset_bool(const struct ConfigSubset *sub, const char *name)
Get a boolean config item by name.
Definition: helpers.c:73
unsigned int ssf
Security strength factor, in bits (see below)
Definition: connection.h:41
static int tunnel_socket_open(struct Connection *conn)
Open a tunnel socket - Implements Connection::open() -.
Definition: tunnel.c:57
int(* read)(struct Connection *conn, char *buf, size_t count)
Definition: connection.h:82
Container for Accounts, Notifications.
Definition: neomutt.h:36
static int tunnel_socket_write(struct Connection *conn, const char *buf, size_t count)
Write data to a tunnel socket - Implements Connection::write() -.
Definition: tunnel.c:159
int(* open)(struct Connection *conn)
Definition: connection.h:69
static int tunnel_socket_read(struct Connection *conn, char *buf, size_t count)
Read data from a tunnel socket - Implements Connection::read() -.
Definition: tunnel.c:137
int(* close)(struct Connection *conn)
Definition: connection.h:119
static int tunnel_socket_close(struct Connection *conn)
Close a tunnel socket - Implements Connection::close() -.
Definition: tunnel.c:204
static int tunnel_socket_poll(struct Connection *conn, time_t wait_secs)
Checks whether tunnel reads would block - Implements Connection::poll() -.
Definition: tunnel.c:187
int(* poll)(struct Connection *conn, time_t wait_secs)
Definition: connection.h:108
int(* write)(struct Connection *conn, const char *buf, size_t count)
Definition: connection.h:95
struct ConfigSubset * sub
Inherited config items.
Definition: neomutt.h:39
+ Here is the call graph for this function:
+ Here is the caller graph for this function: