aboutsummaryrefslogtreecommitdiff
path: root/contrib/bsnmp/snmpd/trans_lsock.c
diff options
context:
space:
mode:
Diffstat (limited to 'contrib/bsnmp/snmpd/trans_lsock.c')
-rw-r--r--contrib/bsnmp/snmpd/trans_lsock.c43
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