diff options
Diffstat (limited to 'src/ipcpd/normal/pol/link_state.c')
-rw-r--r-- | src/ipcpd/normal/pol/link_state.c | 8 |
1 files changed, 6 insertions, 2 deletions
diff --git a/src/ipcpd/normal/pol/link_state.c b/src/ipcpd/normal/pol/link_state.c index 7aa7faf7..cfe4faff 100644 --- a/src/ipcpd/normal/pol/link_state.c +++ b/src/ipcpd/normal/pol/link_state.c @@ -29,6 +29,7 @@ #include <ouroboros/endian.h> #include <ouroboros/dev.h> #include <ouroboros/errno.h> +#include <ouroboros/fccntl.h> #include <ouroboros/fqueue.h> #include <ouroboros/list.h> #include <ouroboros/logs.h> @@ -655,7 +656,7 @@ static void * lsreader(void * o) { fqueue_t * fq; int ret; - uint8_t buf[sizeof(struct lsa) + 1]; + uint8_t buf[sizeof(struct lsa)]; int fd; qosspec_t qs; struct lsa * msg; @@ -680,7 +681,7 @@ static void * lsreader(void * o) } while ((fd = fqueue_next(fq)) >= 0) { - len = flow_read(fd, buf, sizeof(*msg) + 1); + len = flow_read(fd, buf, sizeof(*msg)); if (len <= 0 || len != sizeof(*msg)) continue; @@ -724,6 +725,7 @@ static void handle_event(void * self, /* FIXME: Apply correct QoS on graph */ struct conn * c; qosspec_t qs; + int flags; (void) self; @@ -759,6 +761,8 @@ static void handle_event(void * self, flow_event(c->flow_info.fd, false); break; case NOTIFY_MGMT_CONN_ADD: + fccntl(c->flow_info.fd, FLOWGFLAGS, &flags); + fccntl(c->flow_info.fd, FLOWSFLAGS, flags | FLOWFRNOPART); fset_add(ls.mgmt_set, c->flow_info.fd); if (lsdb_add_nb(c->conn_info.addr, c->flow_info.fd, NB_MGMT)) log_warn("Failed to add mgmt neighbor to LSDB."); |