]> git.proxmox.com Git - mirror_frr.git/blobdiff - ldpd/packet.c
Merge pull request #3069 from donaldsharp/bgp_nexthop_address
[mirror_frr.git] / ldpd / packet.c
index df6bd8e57a8849cc6b9654370bf624909680dd04..8ca90841de82e57ce7ead41e2c6dc747016853ad 100644 (file)
@@ -70,7 +70,7 @@ int
 send_packet(int fd, int af, union ldpd_addr *dst, struct iface_af *ia,
     void *pkt, size_t len)
 {
-       struct sockaddr         *sa;
+       union sockunion su;
 
        switch (af) {
        case AF_INET:
@@ -97,10 +97,10 @@ send_packet(int fd, int af, union ldpd_addr *dst, struct iface_af *ia,
                fatalx("send_packet: unknown af");
        }
 
-       sa = addr2sa(af, dst, LDP_PORT);
-       if (sendto(fd, pkt, len, 0, sa, sockaddr_len(sa)) == -1) {
+       addr2sa(af, dst, LDP_PORT, &su);
+       if (sendto(fd, pkt, len, 0, &su.sa, sockaddr_len(&su.sa)) == -1) {
                log_warn("%s: error sending packet to %s", __func__,
-                   log_sockaddr(sa));
+                        log_sockaddr(&su.sa));
                return (-1);
        }
 
@@ -143,7 +143,8 @@ disc_recv_packet(struct thread *thread)
        struct in_addr           lsr_id;
 
        /* reschedule read */
-       *threadp = thread_add_read(master, disc_recv_packet, threadp, fd);
+       *threadp = NULL;
+       thread_add_read(master, disc_recv_packet, threadp, fd, threadp);
 
        /* setup buffer */
        memset(&m, 0, sizeof(m));
@@ -427,7 +428,8 @@ session_read(struct thread *thread)
        uint16_t         pdu_len, msg_len, msg_size, max_pdu_len;
        int              ret;
 
-       tcp->rev = thread_add_read(master, session_read, nbr, fd);
+       tcp->rev = NULL;
+       thread_add_read(master, session_read, nbr, fd, &tcp->rev);
 
        if ((n = read(fd, tcp->rbuf->buf + tcp->rbuf->wpos,
            sizeof(tcp->rbuf->buf) - tcp->rbuf->wpos)) == -1) {
@@ -492,7 +494,7 @@ session_read(struct thread *thread)
                        msg_len = ntohs(msg->length);
                        if (msg_len < LDP_MSG_LEN ||
                            (msg_len + LDP_MSG_DEAD_LEN) > pdu_len) {
-                               session_shutdown(nbr, S_BAD_TLV_LEN, msg->id,
+                               session_shutdown(nbr, S_BAD_MSG_LEN, msg->id,
                                    msg->type);
                                free(buf);
                                return (0);
@@ -731,7 +733,8 @@ tcp_new(int fd, struct nbr *nbr)
                if ((tcp->rbuf = calloc(1, sizeof(struct ibuf_read))) == NULL)
                        fatal(__func__);
 
-               tcp->rev = thread_add_read(master, session_read, nbr, tcp->fd);
+               tcp->rev = NULL;
+               thread_add_read(master, session_read, nbr, tcp->fd, &tcp->rev);
                tcp->nbr = nbr;
        }
 
@@ -777,8 +780,9 @@ pending_conn_new(int fd, int af, union ldpd_addr *addr)
        pconn->af = af;
        pconn->addr = *addr;
        TAILQ_INSERT_TAIL(&global.pending_conns, pconn, entry);
-       pconn->ev_timeout = thread_add_timer(master, pending_conn_timeout,
-           pconn, PENDING_CONN_TIMEOUT);
+       pconn->ev_timeout = NULL;
+       thread_add_timer(master, pending_conn_timeout, pconn, PENDING_CONN_TIMEOUT,
+                        &pconn->ev_timeout);
 
        return (pconn);
 }