X-Git-Url: https://git.sur5r.net/?a=blobdiff_plain;f=bacula%2Fsrc%2Flib%2Fbsock.h;h=b04af0ffaf4d4605f1bae151bd21f9354501171a;hb=3f8a3a045ea058657030f588a10f786449d00e0d;hp=ad0da87d22b62ad8ba722cfc79b582c6d3287689;hpb=80fae1f964b16c1c7e02c5f7ca823a04c1c3f5c4;p=bacula%2Fbacula diff --git a/bacula/src/lib/bsock.h b/bacula/src/lib/bsock.h index ad0da87d22..b04af0ffaf 100644 --- a/bacula/src/lib/bsock.h +++ b/bacula/src/lib/bsock.h @@ -12,22 +12,17 @@ * Version $Id$ */ /* - Copyright (C) 2000-2004 Kern Sibbald and John Walker + Copyright (C) 2000-2005 Kern Sibbald - This library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. + This program is free software; you can redistribute it and/or + modify it under the terms of the GNU General Public License + version 2 as amended with additional clauses defined in the + file LICENSE in the main source directory. - This library is distributed in the hope that it will be useful, + 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 - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with this library; if not, write to the Free - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, - MA 02111-1307, USA. + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + the file LICENSE for additional details. */ @@ -36,27 +31,30 @@ struct BSOCK { uint32_t in_msg_no; /* input message number */ uint32_t out_msg_no; /* output message number */ int fd; /* socket file descriptor */ + TLS_CONNECTION *tls; /* associated tls connection */ int32_t msglen; /* message length */ int b_errno; /* bsock errno */ int port; /* desired port */ - volatile bool errors: 1; /* set if errors on socket */ + int blocking; /* blocking state (0 = nonblocking, 1 = blocking) */ + volatile int errors; /* incremented for each error on socket */ volatile bool suppress_error_msgs: 1; /* set to suppress error messages */ volatile bool timed_out: 1; /* timed out in read/write */ volatile bool terminated: 1; /* set when BNET_TERMINATE arrives */ bool duped: 1; /* set if duped BSOCK */ - bool spool: 1; /* set for spooling */ + bool spool: 1; /* set for spooling */ volatile time_t timer_start; /* time started read/write */ volatile time_t timeout; /* timeout BSOCK after this interval */ POOLMEM *msg; /* message pool buffer */ char *who; /* Name of daemon to which we are talking */ char *host; /* Host name/IP */ - POOLMEM *errmsg; /* edited error message (to be implemented) */ + POOLMEM *errmsg; /* edited error message */ RES *res; /* Resource to which we are connected */ BSOCK *next; /* next BSOCK if duped */ FILE *spool_fd; /* spooling file */ JCR *jcr; /* jcr or NULL for error msgs */ - struct sockaddr_in client_addr; /* client's IP address */ -}; + struct sockaddr client_addr; /* client's IP address */ + struct sockaddr_in peer_addr; /* peer's IP address */ +}; /* Signal definitions for use in bnet_sig() */ enum { @@ -69,7 +67,9 @@ enum { BNET_HB_RESPONSE = -7, /* Only response permited to HB */ BNET_PROMPT = -8, /* Prompt for UA */ BNET_BTIME = -9, /* Send UTC btime */ - BNET_BREAK = -10 /* Stop current command -- ctl-c */ + BNET_BREAK = -10, /* Stop current command -- ctl-c */ + BNET_START_SELECT = -11, /* Start of a selection list */ + BNET_END_SELECT = -12 /* End of a select list */ }; #define BNET_SETBUF_READ 1 /* Arg for bnet_set_buffer_size */ @@ -80,40 +80,11 @@ enum { #define BNET_HARDEOF -2 #define BNET_ERROR -3 -/* SSL enabling values */ -#define BNET_SSL_NONE 0 /* cannot do SSL */ -#define BNET_SSL_OK 1 /* can do, but not required on my end */ -#define BNET_SSL_REQUIRED 2 /* SSL is required */ - /* - * This is the structure of the in memory BPKT + * TLS enabling values. Value is important for comparison, ie: + * if (tls_remote_need < BNET_TLS_REQUIRED) { ... } */ -typedef struct s_bpkt { - char *id; /* String identifier or name of field */ - uint8_t type; /* field type */ - uint32_t len; /* field length for string, name, bytes */ - void *value; /* pointer to value */ -} BPKT; +#define BNET_TLS_NONE 0 /* cannot do TLS */ +#define BNET_TLS_OK 1 /* can do, but not required on my end */ +#define BNET_TLS_REQUIRED 2 /* TLS is required */ -/* - * These are the data types that can be sent. - * For all values other than string, the storage space - * is assumed to be allocated in the receiving packet. - * For BP_STRING if the *value is non-zero, it is a - * pointer to a POOLMEM buffer, and the Memory Pool - * routines will be used to assure that the length is - * adequate. NOTE!!! This pointer will be changed - * if the memory is reallocated (sort of like Mmsg(&pool) - * does). If the pointer is NULL, a POOLMEM - * buffer will be allocated. - */ -#define BP_EOF 0 /* end of file */ -#define BP_CHAR 1 /* Character */ -#define BP_INT32 1 /* 32 bit integer */ -#define BP_UINT32 3 /* Unsigned 32 bit integer */ -#define BP_INT64 4 /* 64 bit integer */ -#define BP_STRING 5 /* string */ -#define BP_NAME 6 /* Name string -- limited length */ -#define BP_BYTES 7 /* Binary bytes */ -#define BP_FLOAT32 8 /* 32 bit floating point */ -#define BP_FLOAT64 9 /* 64 bit floating point */