Download raw body.
bgpd vs gcc14 and session_req_hard_reset return
Seen this on linux while building protable.
CC bgpd-session.o
../../../openbgpd-portable/src/bgpd/session.c: In function
‘session_req_hard_reset’:
../../../openbgpd-portable/src/bgpd/session.c:1748:1: warning: control
reaches end of non-void function [-Wreturn-type]
1748 | }
| ^
It seems gcc is unable to know that all cases are covered.
So rewrite this function to have a default return 1 instead.
--
:wq Claudio
Index: session.c
===================================================================
RCS file: /cvs/src/usr.sbin/bgpd/session.c,v
diff -u -p -r1.504 session.c
--- session.c 13 Dec 2024 19:21:03 -0000 1.504
+++ session.c 17 Dec 2024 13:51:23 -0000
@@ -1705,6 +1705,7 @@ session_update(uint32_t peerid, struct i
p->stats.msg_sent_update++;
}
+/* Return 1 if a hard reset should be issued, 0 for a graceful notification */
static int
session_req_hard_reset(enum err_codes errcode, uint8_t subcode)
{
@@ -1719,7 +1720,7 @@ session_req_hard_reset(enum err_codes er
* is not trustworthy and so there is no realistic
* hope that forwarding can continue.
*/
- return 1;
+ break;
case ERR_HOLDTIMEREXPIRED:
case ERR_SENDHOLDTIMEREXPIRED:
/* Keep forwarding and hope the other side is back soon. */
@@ -1733,8 +1734,9 @@ session_req_hard_reset(enum err_codes er
/* Per RFC8538 suggestion make these graceful. */
return 0;
}
- return 1;
+ break;
}
+ return 1;
}
void
bgpd vs gcc14 and session_req_hard_reset return