Several minor tweaks.
authorrenato <renato@openbsd.org>
Fri, 1 Jul 2016 23:29:55 +0000 (23:29 +0000)
committerrenato <renato@openbsd.org>
Fri, 1 Jul 2016 23:29:55 +0000 (23:29 +0000)
13 files changed:
usr.sbin/ldpd/address.c
usr.sbin/ldpd/hello.c
usr.sbin/ldpd/init.c
usr.sbin/ldpd/interface.c
usr.sbin/ldpd/labelmapping.c
usr.sbin/ldpd/lde_lib.c
usr.sbin/ldpd/ldpd.c
usr.sbin/ldpd/ldpd.conf.5
usr.sbin/ldpd/ldpe.h
usr.sbin/ldpd/neighbor.c
usr.sbin/ldpd/notification.c
usr.sbin/ldpd/packet.c
usr.sbin/ldpd/socket.c

index fe2e174..dec38cf 100644 (file)
@@ -1,4 +1,4 @@
-/*     $OpenBSD: address.c,v 1.26 2016/06/27 19:06:33 renato Exp $ */
+/*     $OpenBSD: address.c,v 1.27 2016/07/01 23:29:55 renato Exp $ */
 
 /*
  * Copyright (c) 2009 Michele Marchetto <michele@openbsd.org>
@@ -163,7 +163,7 @@ recv_address(struct nbr *nbr, char *buf, uint16_t len)
                        fatalx("recv_address: unknown af");
                }
 
-               log_debug("%s: neighbor ID %s address %s%s", __func__,
+               log_debug("%s: lsr-id %s address %s%s", __func__,
                    inet_ntoa(nbr->id), log_addr(lde_addr.af, &lde_addr.addr),
                    ntohs(addr.type) == MSG_TYPE_ADDR ? "" : " (withdraw)");
 
index cfe6415..71d5f48 100644 (file)
@@ -1,4 +1,4 @@
-/*     $OpenBSD: hello.c,v 1.54 2016/07/01 23:18:24 renato Exp $ */
+/*     $OpenBSD: hello.c,v 1.55 2016/07/01 23:29:55 renato Exp $ */
 
 /*
  * Copyright (c) 2013, 2016 Renato Westphal <renato@openbsd.org>
@@ -233,7 +233,7 @@ recv_hello(struct in_addr lsr_id, struct ldp_msg *lm, int af,
                /*
                 * RFC 7552 - Section 5.2:
                * "The link-local IPv6 addresses MUST NOT be used as the
-               * targeted LDP Hello packet's source or destination addresses.
+               * targeted LDP Hello packet's source or destination addresses".
                */
                if (af == AF_INET6 && IN6_IS_SCOPE_EMBED(&src->v6)) {
                        log_debug("%s: lsr-id %s: targeted hello with "
index c6039cc..819dd14 100644 (file)
@@ -1,4 +1,4 @@
-/*     $OpenBSD: init.c,v 1.30 2016/06/27 19:06:33 renato Exp $ */
+/*     $OpenBSD: init.c,v 1.31 2016/07/01 23:29:55 renato Exp $ */
 
 /*
  * Copyright (c) 2009 Michele Marchetto <michele@openbsd.org>
@@ -24,7 +24,7 @@
 #include "ldpe.h"
 #include "log.h"
 
-static int     gen_init_prms_tlv(struct ibuf *, struct nbr *, uint16_t);
+static int     gen_init_prms_tlv(struct ibuf *, struct nbr *);
 static int     tlv_decode_opt_init_prms(char *, uint16_t);
 
 void
@@ -44,7 +44,7 @@ send_init(struct nbr *nbr)
        size -= LDP_HDR_SIZE;
        err |= gen_msg_hdr(buf, MSG_TYPE_INIT, size);
        size -= LDP_MSG_SIZE;
-       err |= gen_init_prms_tlv(buf, nbr, size);
+       err |= gen_init_prms_tlv(buf, nbr);
        if (err) {
                ibuf_free(buf);
                return;
@@ -72,10 +72,6 @@ recv_init(struct nbr *nbr, char *buf, uint16_t len)
                return (-1);
        }
        memcpy(&sess, buf, sizeof(sess));
-       if (ntohs(sess.keepalive_time) < MIN_KEEPALIVE) {
-               session_shutdown(nbr, S_KEEPALIVE_BAD, init.msgid, init.type);
-               return (-1);
-       }
        if (ntohs(sess.length) != SESS_PRMS_SIZE - TLV_HDR_LEN) {
                session_shutdown(nbr, S_BAD_TLV_LEN, init.msgid, init.type);
                return (-1);
@@ -84,6 +80,10 @@ recv_init(struct nbr *nbr, char *buf, uint16_t len)
                session_shutdown(nbr, S_BAD_PROTO_VER, init.msgid, init.type);
                return (-1);
        }
+       if (ntohs(sess.keepalive_time) < MIN_KEEPALIVE) {
+               session_shutdown(nbr, S_KEEPALIVE_BAD, init.msgid, init.type);
+               return (-1);
+       }
        if (sess.lsr_id != leconf->rtr_id.s_addr ||
            ntohs(sess.lspace_id) != 0) {
                session_shutdown(nbr, S_NO_HELLO, init.msgid, init.type);
@@ -119,13 +119,13 @@ recv_init(struct nbr *nbr, char *buf, uint16_t len)
 }
 
 static int
-gen_init_prms_tlv(struct ibuf *buf, struct nbr *nbr, uint16_t size)
+gen_init_prms_tlv(struct ibuf *buf, struct nbr *nbr)
 {
        struct sess_prms_tlv    parms;
 
        memset(&parms, 0, sizeof(parms));
        parms.type = htons(TLV_TYPE_COMMONSESSION);
-       parms.length = htons(size - TLV_HDR_LEN);
+       parms.length = htons(SESS_PRMS_SIZE - TLV_HDR_LEN);
        parms.proto_version = htons(LDP_VERSION);
        parms.keepalive_time = htons(nbr_get_keepalive(nbr->af, nbr->id));
        parms.reserved = 0;
index 98c846b..8ce9598 100644 (file)
@@ -1,4 +1,4 @@
-/*     $OpenBSD: interface.c,v 1.46 2016/06/18 17:31:32 renato Exp $ */
+/*     $OpenBSD: interface.c,v 1.47 2016/07/01 23:29:55 renato Exp $ */
 
 /*
  * Copyright (c) 2013, 2016 Renato Westphal <renato@openbsd.org>
@@ -82,8 +82,20 @@ if_new(struct kif *kif)
        return (iface);
 }
 
+struct iface *
+if_lookup(struct ldpd_conf *xconf, unsigned short ifindex)
+{
+       struct iface *iface;
+
+       LIST_FOREACH(iface, &xconf->iface_list, entry)
+               if (iface->ifindex == ifindex)
+                       return (iface);
+
+       return (NULL);
+}
+
 void
-if_del(struct iface *iface)
+if_exit(struct iface *iface)
 {
        struct if_addr          *if_addr;
 
@@ -98,20 +110,6 @@ if_del(struct iface *iface)
                LIST_REMOVE(if_addr, entry);
                free(if_addr);
        }
-
-       free(iface);
-}
-
-struct iface *
-if_lookup(struct ldpd_conf *xconf, unsigned short ifindex)
-{
-       struct iface *iface;
-
-       LIST_FOREACH(iface, &xconf->iface_list, entry)
-               if (iface->ifindex == ifindex)
-                       return (iface);
-
-       return (NULL);
 }
 
 struct iface_af *
index c901ea3..43dc7a0 100644 (file)
@@ -1,4 +1,4 @@
-/*     $OpenBSD: labelmapping.c,v 1.52 2016/06/27 19:06:33 renato Exp $ */
+/*     $OpenBSD: labelmapping.c,v 1.53 2016/07/01 23:29:55 renato Exp $ */
 
 /*
  * Copyright (c) 2014, 2015 Renato Westphal <renato@openbsd.org>
@@ -382,28 +382,28 @@ recv_labelmessage(struct nbr *nbr, char *buf, uint16_t len, uint16_t type)
 
                switch (type) {
                case MSG_TYPE_LABELMAPPING:
-                       log_debug("label mapping from nbr %s, FEC %s, "
+                       log_debug("label mapping from lsr-id %s, FEC %s, "
                            "label %u", inet_ntoa(nbr->id),
                            log_map(&me->map), me->map.label);
                        imsg_type = IMSG_LABEL_MAPPING;
                        break;
                case MSG_TYPE_LABELREQUEST:
-                       log_debug("label request from nbr %s, FEC %s",
+                       log_debug("label request from lsr-id %s, FEC %s",
                            inet_ntoa(nbr->id), log_map(&me->map));
                        imsg_type = IMSG_LABEL_REQUEST;
                        break;
                case MSG_TYPE_LABELWITHDRAW:
-                       log_debug("label withdraw from nbr %s, FEC %s",
+                       log_debug("label withdraw from lsr-id %s, FEC %s",
                            inet_ntoa(nbr->id), log_map(&me->map));
                        imsg_type = IMSG_LABEL_WITHDRAW;
                        break;
                case MSG_TYPE_LABELRELEASE:
-                       log_debug("label release from nbr %s, FEC %s",
+                       log_debug("label release from lsr-id %s, FEC %s",
                            inet_ntoa(nbr->id), log_map(&me->map));
                        imsg_type = IMSG_LABEL_RELEASE;
                        break;
                case MSG_TYPE_LABELABORTREQ:
-                       log_debug("label abort from nbr %s, FEC %s",
+                       log_debug("label abort from lsr-id %s, FEC %s",
                            inet_ntoa(nbr->id), log_map(&me->map));
                        imsg_type = IMSG_LABEL_ABORT;
                        break;
@@ -697,9 +697,6 @@ tlv_decode_fec_elm(struct nbr *nbr, struct ldp_msg *lm, char *buf,
                        }
 
                        memcpy(&stlv, buf + off, sizeof(stlv));
-                       off += SUBTLV_HDR_LEN;
-                       pw_len -= SUBTLV_HDR_LEN;
-
                        switch (stlv.type) {
                        case SUBTLV_IFMTU:
                                if (stlv.length != FEC_SUBTLV_IFMTU_LEN) {
@@ -707,8 +704,8 @@ tlv_decode_fec_elm(struct nbr *nbr, struct ldp_msg *lm, char *buf,
                                            lm->msgid, lm->type);
                                        return (-1);
                                }
-                               memcpy(&map->fec.pwid.ifmtu, buf + off,
-                                   sizeof(uint16_t));
+                               memcpy(&map->fec.pwid.ifmtu, buf + off +
+                                   SUBTLV_HDR_LEN, sizeof(uint16_t));
                                map->fec.pwid.ifmtu = ntohs(map->fec.pwid.ifmtu);
                                map->flags |= F_MAP_PW_IFMTU;
                                break;
@@ -716,8 +713,8 @@ tlv_decode_fec_elm(struct nbr *nbr, struct ldp_msg *lm, char *buf,
                                /* ignore */
                                break;
                        }
-                       off += stlv.length - SUBTLV_HDR_LEN;
-                       pw_len -= stlv.length - SUBTLV_HDR_LEN;
+                       off += stlv.length;
+                       pw_len -= stlv.length;
                }
 
                return (off);
index 36fa4a6..ac99fbd 100644 (file)
@@ -1,4 +1,4 @@
-/*     $OpenBSD: lde_lib.c,v 1.61 2016/06/18 01:29:05 renato Exp $ */
+/*     $OpenBSD: lde_lib.c,v 1.62 2016/07/01 23:29:55 renato Exp $ */
 
 /*
  * Copyright (c) 2013, 2016 Renato Westphal <renato@openbsd.org>
@@ -309,18 +309,18 @@ egress_label(enum fec_type fec_type)
 {
        switch (fec_type) {
        case FEC_TYPE_IPV4:
-               if (!(ldeconf->ipv4.flags & F_LDPD_AF_EXPNULL))
-                       return (MPLS_LABEL_IMPLNULL);
-               return (MPLS_LABEL_IPV4NULL);
+               if (ldeconf->ipv4.flags & F_LDPD_AF_EXPNULL)
+                       return (MPLS_LABEL_IPV4NULL);
+               break;
        case FEC_TYPE_IPV6:
-               if (!(ldeconf->ipv6.flags & F_LDPD_AF_EXPNULL))
-                       return (MPLS_LABEL_IMPLNULL);
-               return (MPLS_LABEL_IPV6NULL);
+               if (ldeconf->ipv6.flags & F_LDPD_AF_EXPNULL)
+                       return (MPLS_LABEL_IPV6NULL);
+               break;
        default:
-               log_warnx("%s: unexpected fec type", __func__);
+               fatalx("egress_label: unexpected fec type");
        }
 
-       return (NO_LABEL);
+       return (MPLS_LABEL_IMPLNULL);
 }
 
 void
index e2bc9d9..51ef17d 100644 (file)
@@ -1,4 +1,4 @@
-/*     $OpenBSD: ldpd.c,v 1.55 2016/07/01 23:14:31 renato Exp $ */
+/*     $OpenBSD: ldpd.c,v 1.56 2016/07/01 23:29:55 renato Exp $ */
 
 /*
  * Copyright (c) 2013, 2016 Renato Westphal <renato@openbsd.org>
@@ -880,9 +880,8 @@ merge_ifaces(struct ldpd_conf *conf, struct ldpd_conf *xconf)
                if ((xi = if_lookup(xconf, iface->ifindex)) == NULL) {
                        LIST_REMOVE(iface, entry);
                        if (ldpd_process == PROC_LDP_ENGINE)
-                               if_del(iface);
-                       else
-                               free(iface);
+                               if_exit(iface);
+                       free(iface);
                }
        }
        LIST_FOREACH_SAFE(xi, &xconf->iface_list, entry, itmp) {
index 686e3cc..57ee266 100644 (file)
@@ -1,4 +1,4 @@
-.\"    $OpenBSD: ldpd.conf.5,v 1.30 2016/07/01 23:14:31 renato Exp $
+.\"    $OpenBSD: ldpd.conf.5,v 1.31 2016/07/01 23:29:55 renato Exp $
 .\"
 .\" Copyright (c) 2013, 2016 Renato Westphal <renato@openbsd.org>
 .\" Copyright (c) 2009 Michele Marchetto <michele@openbsd.org>
@@ -260,7 +260,7 @@ Neighbor-specific parameters are listed below.
 .It Ic keepalive Ar seconds
 Set the keepalive timeout in seconds.
 Inherited from the global configuration if not given.
-The default value is 180; valid range is 3\-65535.
+Valid range is 3\-65535.
 .It Xo
 .Ic gtsm-enable
 .Pq Ic yes Ns | Ns Ic no
index ac0a285..4d9d77d 100644 (file)
@@ -1,4 +1,4 @@
-/*     $OpenBSD: ldpe.h,v 1.64 2016/07/01 23:14:31 renato Exp $ */
+/*     $OpenBSD: ldpe.h,v 1.65 2016/07/01 23:29:55 renato Exp $ */
 
 /*
  * Copyright (c) 2013, 2016 Renato Westphal <renato@openbsd.org>
@@ -196,7 +196,7 @@ void                 mapping_list_clr(struct mapping_head *);
 
 /* interface.c */
 struct iface   *if_new(struct kif *);
-void            if_del(struct iface *);
+void            if_exit(struct iface *);
 struct iface   *if_lookup(struct ldpd_conf *, unsigned short);
 struct iface_af *iface_af_get(struct iface *, int);
 void            if_addr_add(struct kaddr *);
index ef50fa8..d58bf03 100644 (file)
@@ -1,4 +1,4 @@
-/*     $OpenBSD: neighbor.c,v 1.76 2016/07/01 23:22:42 renato Exp $ */
+/*     $OpenBSD: neighbor.c,v 1.77 2016/07/01 23:29:55 renato Exp $ */
 
 /*
  * Copyright (c) 2013, 2016 Renato Westphal <renato@openbsd.org>
@@ -68,7 +68,9 @@ struct {
     {NBR_STA_OPENSENT, NBR_EVT_INIT_RCVD,      NBR_ACT_KEEPALIVE_SEND, NBR_STA_OPENREC},
 /* Session Maintenance */
     {NBR_STA_OPER,     NBR_EVT_PDU_RCVD,       NBR_ACT_RST_KTIMEOUT,   0},
+    {NBR_STA_SESSION,  NBR_EVT_PDU_RCVD,       NBR_ACT_NOTHING,        0},
     {NBR_STA_OPER,     NBR_EVT_PDU_SENT,       NBR_ACT_RST_KTIMER,     0},
+    {NBR_STA_SESSION,  NBR_EVT_PDU_SENT,       NBR_ACT_NOTHING,        0},
 /* Session Close */
     {NBR_STA_PRESENT,  NBR_EVT_CLOSE_SESSION,  NBR_ACT_NOTHING,        0},
     {NBR_STA_SESSION,  NBR_EVT_CLOSE_SESSION,  NBR_ACT_CLOSE_SESSION,  NBR_STA_PRESENT},
index e6c9cc9..6c290ce 100644 (file)
@@ -1,4 +1,4 @@
-/*     $OpenBSD: notification.c,v 1.36 2016/06/27 19:06:33 renato Exp $ */
+/*     $OpenBSD: notification.c,v 1.37 2016/07/01 23:29:55 renato Exp $ */
 
 /*
  * Copyright (c) 2009 Michele Marchetto <michele@openbsd.org>
@@ -25,7 +25,7 @@
 #include "log.h"
 #include "ldpe.h"
 
-static int      gen_status_tlv(struct ibuf *, uint32_t, uint32_t, uint32_t);
+static int      gen_status_tlv(struct ibuf *, uint32_t, uint32_t, uint16_t);
 
 void
 send_notification_full(struct tcp_conn *tcp, struct notify_msg *nm)
@@ -198,11 +198,11 @@ recv_notification(struct nbr *nbr, char *buf, uint16_t len)
        }
 
        if (st.status_code & htonl(STATUS_FATAL))
-               log_warnx("received notification from neighbor %s: %s",
+               log_warnx("received notification from lsr-id %s: %s",
                    inet_ntoa(nbr->id),
                    notification_name(ntohl(st.status_code)));
        else
-               log_debug("received non-fatal notification from neighbor "
+               log_debug("received non-fatal notification from lsr-id "
                    "%s: %s", inet_ntoa(nbr->id),
                    notification_name(ntohl(st.status_code)));
 
@@ -222,7 +222,7 @@ recv_notification(struct nbr *nbr, char *buf, uint16_t len)
 }
 
 static int
-gen_status_tlv(struct ibuf *buf, uint32_t status, uint32_t msgid, uint32_t type)
+gen_status_tlv(struct ibuf *buf, uint32_t status, uint32_t msgid, uint16_t type)
 {
        struct status_tlv       st;
 
index ababd18..fa3f194 100644 (file)
@@ -1,4 +1,4 @@
-/*     $OpenBSD: packet.c,v 1.65 2016/07/01 23:14:31 renato Exp $ */
+/*     $OpenBSD: packet.c,v 1.66 2016/07/01 23:29:55 renato Exp $ */
 
 /*
  * Copyright (c) 2013, 2016 Renato Westphal <renato@openbsd.org>
@@ -472,19 +472,16 @@ session_read(int fd, short event, void *arg)
                        return;
                }
                pdu_len -= LDP_HDR_PDU_LEN;
-
                if (ldp_hdr->lsr_id != nbr->id.s_addr ||
                    ldp_hdr->lspace_id != 0) {
                        session_shutdown(nbr, S_BAD_LDP_ID, 0, 0);
                        free(buf);
                        return;
                }
-
                pdu += LDP_HDR_SIZE;
                len -= LDP_HDR_SIZE;
 
-               if (nbr->state == NBR_STA_OPER)
-                       nbr_fsm(nbr, NBR_EVT_PDU_RCVD);
+               nbr_fsm(nbr, NBR_EVT_PDU_RCVD);
 
                while (len >= LDP_MSG_SIZE) {
                        uint16_t type;
index 039241a..e161099 100644 (file)
@@ -1,4 +1,4 @@
-/*     $OpenBSD: socket.c,v 1.8 2016/07/01 23:14:31 renato Exp $ */
+/*     $OpenBSD: socket.c,v 1.9 2016/07/01 23:29:55 renato Exp $ */
 
 /*
  * Copyright (c) 2016 Renato Westphal <renato@openbsd.org>
@@ -382,7 +382,7 @@ sock_set_ipv6_mcast_loop(int fd)
        unsigned int    loop = 0;
 
        if (setsockopt(fd, IPPROTO_IPV6, IPV6_MULTICAST_LOOP,
-           (unsigned int *)&loop, sizeof(loop)) < 0) {
+           &loop, sizeof(loop)) < 0) {
                log_warn("%s: error setting IPV6_MULTICAST_LOOP", __func__);
                return (-1);
        }