diff options
author | Olivier Dugeon <olivier.dugeon@orange.com> | 2022-08-01 17:26:36 +0200 |
---|---|---|
committer | Olivier Dugeon <olivier.dugeon@orange.com> | 2022-08-01 17:32:56 +0200 |
commit | 9bf9bd1a0b818f8cd1554ef07d47028247703b75 (patch) | |
tree | ef863cb9f620eb9bd43a1224e1beedba8aeb2606 | |
parent | Merge pull request #11691 from mxyns/bmp-vpnv4monupd-fix (diff) | |
download | frr-9bf9bd1a0b818f8cd1554ef07d47028247703b75.tar.xz frr-9bf9bd1a0b818f8cd1554ef07d47028247703b75.zip |
lib: Correct valgrind errors
In CSPF topo test, valgrind detects uninitialized bytes when exporting TE
Opaque information through ZEBRA. This is due to C pragma compilation directive
__attribute__(aligned(8)) in struct ls_node_id in link_state.h. Valgrind
consideris that struct ls_node_id nid = {} doesn't initialized the padding
bytes introduced by gcc.
This patch simply removes the C pragma compilation directive and also takes
opportunity to remove the transmission of remote node id for vertices and
subnets which is not known. Indeed, remote node id is only pertinent for
edges.
Signed-off-by: Olivier Dugeon <olivier.dugeon@orange.com>
-rw-r--r-- | lib/link_state.c | 6 | ||||
-rw-r--r-- | lib/link_state.h | 2 |
2 files changed, 4 insertions, 4 deletions
diff --git a/lib/link_state.c b/lib/link_state.c index 639a1d37d..0ef87b7a5 100644 --- a/lib/link_state.c +++ b/lib/link_state.c @@ -1357,7 +1357,6 @@ struct ls_message *ls_parse_msg(struct stream *s) /* Read LS Message header */ STREAM_GETC(s, msg->event); STREAM_GETC(s, msg->type); - STREAM_GET(&msg->remote_id, s, sizeof(struct ls_node_id)); /* Read Message Payload */ switch (msg->type) { @@ -1365,6 +1364,7 @@ struct ls_message *ls_parse_msg(struct stream *s) msg->data.node = ls_parse_node(s); break; case LS_MSG_TYPE_ATTRIBUTES: + STREAM_GET(&msg->remote_id, s, sizeof(struct ls_node_id)); msg->data.attr = ls_parse_attributes(s); break; case LS_MSG_TYPE_PREFIX: @@ -1563,13 +1563,14 @@ static int ls_format_msg(struct stream *s, struct ls_message *msg) /* Prepare Link State header */ stream_putc(s, msg->event); stream_putc(s, msg->type); - stream_put(s, &msg->remote_id, sizeof(struct ls_node_id)); /* Add Message Payload */ switch (msg->type) { case LS_MSG_TYPE_NODE: return ls_format_node(s, msg->data.node); case LS_MSG_TYPE_ATTRIBUTES: + /* Add remote node first */ + stream_put(s, &msg->remote_id, sizeof(struct ls_node_id)); return ls_format_attributes(s, msg->data.attr); case LS_MSG_TYPE_PREFIX: return ls_format_prefix(s, msg->data.prefix); @@ -1625,7 +1626,6 @@ int ls_send_msg(struct zclient *zclient, struct ls_message *msg, return zclient_send_message(zclient); } - struct ls_message *ls_vertex2msg(struct ls_message *msg, struct ls_vertex *vertex) { diff --git a/lib/link_state.h b/lib/link_state.h index f46a2068a..ed315452d 100644 --- a/lib/link_state.h +++ b/lib/link_state.h @@ -91,7 +91,7 @@ struct ls_node_id { uint8_t level; /* ISIS Level */ uint8_t padding; } iso; - } id __attribute__((aligned(8))); + } id; }; /** |