diff options
Diffstat (limited to 'contrib/bsnmp/snmpd/trans_lsock.c')
-rw-r--r-- | contrib/bsnmp/snmpd/trans_lsock.c | 43 |
1 files changed, 12 insertions, 31 deletions
diff --git a/contrib/bsnmp/snmpd/trans_lsock.c b/contrib/bsnmp/snmpd/trans_lsock.c index fa3bd34d14f0..01beb01927ec 100644 --- a/contrib/bsnmp/snmpd/trans_lsock.c +++ b/contrib/bsnmp/snmpd/trans_lsock.c @@ -58,20 +58,19 @@ static int lsock_stop(int); static void lsock_close_port(struct tport *); static int lsock_init_port(struct tport *); static ssize_t lsock_send(struct tport *, const u_char *, size_t, - const struct sockaddr *, size_t); + struct port_input *); static ssize_t lsock_recv(struct tport *, struct port_input *); /* exported */ const struct transport_def lsock_trans = { - "lsock", - OIDX_begemotSnmpdTransLsock, - lsock_start, - lsock_stop, - lsock_close_port, - lsock_init_port, - lsock_send, - lsock_recv, - NULL + .name = "lsock", + .id = OIDX_begemotSnmpdTransLsock, + .start = lsock_start, + .stop = lsock_stop, + .close_port = lsock_close_port, + .init_port = lsock_init_port, + .send = lsock_send, + .recv = lsock_recv, }; static struct transport *my_trans; @@ -396,28 +395,10 @@ lsock_init_port(struct tport *tp) * Send something */ static ssize_t -lsock_send(struct tport *tp, const u_char *buf, size_t len, - const struct sockaddr *addr, size_t addrlen) +lsock_send(struct tport *tp __unused, const u_char *buf, size_t len, + struct port_input *pi) { - struct lsock_port *p = (struct lsock_port *)tp; - struct lsock_peer *peer; - - if (p->type == LOCP_DGRAM_PRIV || p->type == LOCP_DGRAM_UNPRIV) { - peer = LIST_FIRST(&p->peers); - - } else { - /* search for the peer */ - LIST_FOREACH(peer, &p->peers, link) - if (peer->input.peerlen == addrlen && - memcmp(peer->input.peer, addr, addrlen) == 0) - break; - if (peer == NULL) { - errno = ENOTCONN; - return (-1); - } - } - - return (sendto(peer->input.fd, buf, len, 0, addr, addrlen)); + return (sendto(pi->fd, buf, len, MSG_NOSIGNAL, pi->peer, pi->peerlen)); } static void |