diff --git a/zebra/if_socket.c b/zebra/if_socket.c new file mode 100644 index 0000000000..309d5a3f3e --- /dev/null +++ b/zebra/if_socket.c @@ -0,0 +1,41 @@ +/* + * Zebra Interface interaction with the kernel using socket. + * Copyright (C) 2022 NVIDIA CORPORATION & AFFILIATES + * Stephen Worley + * + * This file is part of FRR. + * + * FRR is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2, or (at your option) any + * later version. + * + * FRR is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with FRR; see the file COPYING. If not, write to the Free + * Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA + * 02111-1307, USA. + */ + +#include + +#ifndef HAVE_NETLINK + +#include "lib_errors.h" + +#include "zebra/rt.h" +#include "zebra/zebra_dplane.h" +#include "zebra/zebra_errors.h" + +enum zebra_dplane_result kernel_intf_update(struct zebra_dplane_ctx *ctx) +{ + flog_err(EC_LIB_UNAVAILABLE, "%s not Implemented for this platform", + __func__); + return ZEBRA_DPLANE_REQUEST_FAILURE; +} + +#endif diff --git a/zebra/kernel_socket.c b/zebra/kernel_socket.c index ce1f17111b..6583af0a54 100644 --- a/zebra/kernel_socket.c +++ b/zebra/kernel_socket.c @@ -1577,6 +1577,12 @@ void kernel_update_multi(struct dplane_ctx_q *ctx_list) res = kernel_pbr_rule_update(ctx); break; + case DPLANE_OP_INTF_INSTALL: + case DPLANE_OP_INTF_UPDATE: + case DPLANE_OP_INTF_DELETE: + res = kernel_intf_update(ctx); + break; + /* Ignore 'notifications' - no-op */ case DPLANE_OP_SYS_ROUTE_ADD: case DPLANE_OP_SYS_ROUTE_DELETE: diff --git a/zebra/rt.h b/zebra/rt.h index 5e626928d9..4952c3eb1a 100644 --- a/zebra/rt.h +++ b/zebra/rt.h @@ -66,6 +66,9 @@ enum zebra_dplane_result kernel_neigh_update_ctx(struct zebra_dplane_ctx *ctx); extern enum zebra_dplane_result kernel_pbr_rule_update(struct zebra_dplane_ctx *ctx); +extern enum zebra_dplane_result +kernel_intf_update(struct zebra_dplane_ctx *ctx); + #endif /* !HAVE_NETLINK */ extern int kernel_neigh_update(int cmd, int ifindex, void *addr, char *lla, diff --git a/zebra/subdir.am b/zebra/subdir.am index 77e0898d81..8cb1237c22 100644 --- a/zebra/subdir.am +++ b/zebra/subdir.am @@ -60,6 +60,7 @@ zebra_zebra_SOURCES = \ zebra/debug.c \ zebra/if_ioctl.c \ zebra/if_netlink.c \ + zebra/if_socket.c \ zebra/if_sysctl.c \ zebra/interface.c \ zebra/ioctl.c \