X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?p=secnet.git;a=blobdiff_plain;f=udp.c;h=1535f290c587a9efaa261d1ad2da740283ad024e;hp=dde73efb53eb4fe8d0af4555ff30f492bfbab82d;hb=2d80199d7bc25b4c6e4a5ac986f8902770e82d96;hpb=b3877445fa32f46d70057212cb38347ae1bf4955 diff --git a/udp.c b/udp.c index dde73ef..1535f29 100644 --- a/udp.c +++ b/udp.c @@ -1,5 +1,24 @@ /* UDP send/receive module for secnet */ +/* + * This file is part of secnet. + * See README for full list of copyright holders. + * + * secnet is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version d of the License, or + * (at your option) any later version. + * + * secnet 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 + * version 3 along with secnet; if not, see + * https://www.gnu.org/licenses/gpl.html. + */ + /* This module enables sites to communicate by sending UDP * packets. When an instance of the module is created we can * optionally bind to a particular local IP address (not implemented @@ -31,6 +50,7 @@ struct udp { struct udpcommon uc; struct udpsocks socks; bool_t addr_configured; + unsigned counter; }; /* @@ -53,7 +73,8 @@ static const char *udp_addr_to_string(void *commst, const struct comm_addr *ca) int ix=ca->ix>=0 ? ca->ix : 0; assert(ix>=0 && ixn_socks); - snprintf(sbuf, sizeof(sbuf), "udp:%s%s-%s", + snprintf(sbuf, sizeof(sbuf), "udp#%u@l%d:%s%s-%s", + st->counter, st->uc.cc.loc.line, iaddr_to_string(&socks->socks[ix].addr), ca->ix<0 && socks->n_socks>1 ? "&" : "", iaddr_to_string(&ca->ia)); @@ -180,7 +201,8 @@ static void udp_socks_afterpoll(void *state, struct pollfd *fds, int nfds) } static bool_t udp_sendmsg(void *commst, struct buffer_if *buf, - const struct comm_addr *dest) + const struct comm_addr *dest, + struct comm_clientinfo *clientinfo) { struct udp *st=commst; struct udpcommon *uc=&st->uc; @@ -414,6 +436,8 @@ static void udp_phase_hook(void *sst, uint32_t new_phase) static list_t *udp_apply(closure_t *self, struct cloc loc, dict_t *context, list_t *args) { + static unsigned counter; + struct udp *st; list_t *caddrl; list_t *l; @@ -428,6 +452,8 @@ static list_t *udp_apply(closure_t *self, struct cloc loc, dict_t *context, struct udpsocks *socks=&st->socks; struct commcommon *cc=&uc->cc; + st->counter=counter++; + union iaddr defaultaddrs[] = { #ifdef CONFIG_IPV6 { .sin6 = { .sin6_family=AF_INET6,