X-Git-Url: https://tinc-vpn.org/git/browse?p=tinc;a=blobdiff_plain;f=src%2Fmeta.c;h=289d0b873bc032a3b21e6279c372a07e8e14e2a6;hp=5774bb93c94feaa85b5e059ce1ec713fb3a6f67c;hb=408ca91766088b6c2d38e198b0692bf394b41248;hpb=35932fe6c8cb481eb687f98424776ce429570c21 diff --git a/src/meta.c b/src/meta.c index 5774bb93..289d0b87 100644 --- a/src/meta.c +++ b/src/meta.c @@ -17,7 +17,7 @@ along with this program; if not, write to the Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. - $Id: meta.c,v 1.1.2.7 2000/10/29 00:02:18 guus Exp $ + $Id: meta.c,v 1.1.2.12 2000/11/20 19:12:12 guus Exp $ */ #include "config.h" @@ -26,16 +26,23 @@ #include #include #include -#include -#include #include #include +/* This line must be below the rest for FreeBSD */ +#include + +#ifdef HAVE_OPENSSL_EVP_H +# include +#else +# include +#endif #include "net.h" +#include "connection.h" #include "system.h" #include "protocol.h" -int send_meta(conn_list_t *cl, char *buffer, int length) +int send_meta(connection_t *cl, char *buffer, int length) { char outbuf[MAXBUFSIZE]; char *bufp; @@ -46,15 +53,15 @@ cp cl->name, cl->hostname, buffer); buffer[length-1]='\n'; -/* + if(cl->status.encryptout) { EVP_EncryptUpdate(cl->cipher_outctx, outbuf, &outlen, buffer, length); bufp = outbuf; + length = outlen; } else -*/ - bufp = buffer; + bufp = buffer; if(write(cl->meta_socket, bufp, length) < 0) { @@ -65,18 +72,21 @@ cp return 0; } -int broadcast_meta(conn_list_t *cl, char *buffer, int length) +void broadcast_meta(connection_t *cl, char *buffer, int length) { - conn_list_t *p; + rbl_t *rbl; + connection_t *p; cp - for(p = conn_list; p != NULL; p = p->next) - if(p != cl && p->status.meta && p->status.active) - send_meta(p, buffer, length); + RBL_FOREACH(connection_tree, rbl) + { + p = (connection_t *)rbl->data; + if(p != cl && p->status.meta && p->status.active) + send_meta(p, buffer, length); + } cp - return 0; } -int receive_meta(conn_list_t *cl) +int receive_meta(connection_t *cl) { int x, l = sizeof(x); int oldlen, i; @@ -96,11 +106,10 @@ cp cl->name, cl->hostname, strerror(x)); return -1; } -/* + if(cl->status.decryptin) bufp = inbuf; else -*/ bufp = cl->buffer + cl->buflen; lenin = read(cl->meta_socket, bufp, MAXBUFSIZE - cl->buflen); @@ -120,12 +129,12 @@ cp cl->name, cl->hostname); return -1; } -/* + if(cl->status.decryptin) { - EVP_DecryptUpdate(cl->cipher_inctx, cl->buffer + cl->buflen, NULL, inbuf, lenin); + EVP_DecryptUpdate(cl->cipher_inctx, cl->buffer + cl->buflen, &lenin, inbuf, lenin); } -*/ + oldlen = cl->buflen; cl->buflen += lenin; @@ -170,7 +179,6 @@ cp } cl->last_ping_time = time(NULL); - cl->want_ping = 0; cp return 0; }