summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorOlivier Dugeon <olivier.dugeon@orange.com>2022-08-01 17:26:36 +0200
committerOlivier Dugeon <olivier.dugeon@orange.com>2022-08-01 17:32:56 +0200
commit9bf9bd1a0b818f8cd1554ef07d47028247703b75 (patch)
treeef863cb9f620eb9bd43a1224e1beedba8aeb2606
parentMerge pull request #11691 from mxyns/bmp-vpnv4monupd-fix (diff)
downloadfrr-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.c6
-rw-r--r--lib/link_state.h2
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;
};
/**