git: fd1aa866eb22 - main - routing: add rt_tables_get_rnh_safe() that doesn't panic when af/fib is incorrect.
- Go to: [ bottom of page ] [ top of archives ] [ this month ]
Date: Tue, 25 Apr 2023 11:15:27 UTC
The branch main has been updated by melifaro: URL: https://cgit.FreeBSD.org/src/commit/?id=fd1aa866eb22bcaa01dbedfbe7778c29c0c2fa25 commit fd1aa866eb22bcaa01dbedfbe7778c29c0c2fa25 Author: Alexander V. Chernikov <melifaro@FreeBSD.org> AuthorDate: 2023-04-25 10:53:51 +0000 Commit: Alexander V. Chernikov <melifaro@FreeBSD.org> CommitDate: 2023-04-25 10:53:51 +0000 routing: add rt_tables_get_rnh_safe() that doesn't panic when af/fib is incorrect. MFC after: 2 weeks --- sys/net/route/route_ctl.h | 2 ++ sys/net/route/route_tables.c | 11 +++++++++++ 2 files changed, 13 insertions(+) diff --git a/sys/net/route/route_ctl.h b/sys/net/route/route_ctl.h index 7a4ed804feb7..d3c457cdeaae 100644 --- a/sys/net/route/route_ctl.h +++ b/sys/net/route/route_ctl.h @@ -35,6 +35,8 @@ #ifndef _NET_ROUTE_ROUTE_CTL_H_ #define _NET_ROUTE_ROUTE_CTL_H_ +struct rib_head *rt_tables_get_rnh_safe(uint32_t table, sa_family_t family); + struct rib_cmd_info { uint8_t rc_cmd; /* RTM_ADD|RTM_DEL|RTM_CHANGE */ uint8_t spare[3]; diff --git a/sys/net/route/route_tables.c b/sys/net/route/route_tables.c index be67556915d0..31696e847488 100644 --- a/sys/net/route/route_tables.c +++ b/sys/net/route/route_tables.c @@ -54,6 +54,7 @@ __FBSDID("$FreeBSD$"); #include <net/vnet.h> #include <net/route.h> +#include <net/route/route_ctl.h> #include <net/route/route_var.h> /* Kernel config default option. */ @@ -387,6 +388,16 @@ rt_tables_get_rnh(uint32_t table, sa_family_t family) return (rt_tables_get_rnh_ptr(table, family)); } +struct rib_head * +rt_tables_get_rnh_safe(uint32_t table, sa_family_t family) +{ + if (__predict_false(table >= V_rt_numfibs)) + return (NULL); + if (__predict_false(family >= (AF_MAX + 1))) + return (NULL); + return (rt_tables_get_rnh_ptr(table, family)); +} + u_int rt_tables_get_gen(uint32_t table, sa_family_t family) {