Module Name: src
Committed By: yamaguchi
Date: Thu Apr 4 07:55:32 UTC 2024
Modified Files:
src/sbin/ifconfig: lagg.c
src/sys/net/lagg: if_lagg.c if_lagg.h
Log Message:
lagg(4): use flexible array member
To generate a diff of this commit:
cvs rdiff -u -r1.4 -r1.5 src/sbin/ifconfig/lagg.c
cvs rdiff -u -r1.57 -r1.58 src/sys/net/lagg/if_lagg.c
cvs rdiff -u -r1.3 -r1.4 src/sys/net/lagg/if_lagg.h
Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.
Modified files:
Index: src/sbin/ifconfig/lagg.c
diff -u src/sbin/ifconfig/lagg.c:1.4 src/sbin/ifconfig/lagg.c:1.5
--- src/sbin/ifconfig/lagg.c:1.4 Wed Dec 6 05:57:39 2023
+++ src/sbin/ifconfig/lagg.c Thu Apr 4 07:55:32 2024
@@ -1,4 +1,4 @@
-/* $NetBSD: lagg.c,v 1.4 2023/12/06 05:57:39 yamaguchi Exp $ */
+/* $NetBSD: lagg.c,v 1.5 2024/04/04 07:55:32 yamaguchi Exp $ */
/*
* Copyright (c) 2021 Internet Initiative Japan Inc.
@@ -28,7 +28,7 @@
#include <sys/cdefs.h>
#if !defined(lint)
-__RCSID("$NetBSD: lagg.c,v 1.4 2023/12/06 05:57:39 yamaguchi Exp $");
+__RCSID("$NetBSD: lagg.c,v 1.5 2024/04/04 07:55:32 yamaguchi Exp $");
#endif /* !defined(lint) */
#include <sys/param.h>
@@ -393,7 +393,11 @@ setlaggproto(prop_dictionary_t env, prop
static int
setlaggport(prop_dictionary_t env, prop_dictionary_t oenv __unused)
{
- struct lagg_req req;
+ struct {
+ struct lagg_req req;
+ struct laggreqport port[1];
+ } _req;
+ struct lagg_req *req;
struct laggreqport *rp;
const char *ifname;
enum lagg_ioctl ioc;
@@ -406,9 +410,10 @@ setlaggport(prop_dictionary_t env, prop_
return -1;
}
- memset(&req, 0, sizeof(req));
- req.lrq_nports = 1;
- rp = &req.lrq_reqports[0];
+ memset(&_req, 0, sizeof(_req));
+ req = (struct lagg_req *)&_req;
+ rp = &req->lrq_reqports[0];
+
strlcpy(rp->rp_portname, ifname, sizeof(rp->rp_portname));
ioc = LAGGIOC_NOCMD;
@@ -426,8 +431,8 @@ setlaggport(prop_dictionary_t env, prop_
}
if (ioc != LAGGIOC_NOCMD) {
- req.lrq_ioctl = ioc;
- if (indirect_ioctl(env, SIOCSLAGG, &req) == -1) {
+ req->lrq_ioctl = ioc;
+ if (indirect_ioctl(env, SIOCSLAGG, req) == -1) {
if (lagg_debug) {
warn("cmd=%d", ioc);
}
Index: src/sys/net/lagg/if_lagg.c
diff -u src/sys/net/lagg/if_lagg.c:1.57 src/sys/net/lagg/if_lagg.c:1.58
--- src/sys/net/lagg/if_lagg.c:1.57 Fri Dec 1 09:27:17 2023
+++ src/sys/net/lagg/if_lagg.c Thu Apr 4 07:55:32 2024
@@ -1,4 +1,4 @@
-/* $NetBSD: if_lagg.c,v 1.57 2023/12/01 09:27:17 yamaguchi Exp $ */
+/* $NetBSD: if_lagg.c,v 1.58 2024/04/04 07:55:32 yamaguchi Exp $ */
/*
* Copyright (c) 2005, 2006 Reyk Floeter <[email protected]>
@@ -20,7 +20,7 @@
*/
#include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: if_lagg.c,v 1.57 2023/12/01 09:27:17 yamaguchi Exp $");
+__KERNEL_RCSID(0, "$NetBSD: if_lagg.c,v 1.58 2024/04/04 07:55:32 yamaguchi Exp $");
#ifdef _KERNEL_OPT
#include "opt_inet.h"
@@ -693,7 +693,7 @@ lagg_ioctl(struct ifnet *ifp, u_long cmd
break;
nports = laggreq.lrq_nports;
- if (nports > 1) {
+ if (nports > 0) {
allocsiz = sizeof(struct lagg_req)
+ sizeof(struct laggreqport) * nports;
buf = kmem_alloc(allocsiz, KM_SLEEP);
Index: src/sys/net/lagg/if_lagg.h
diff -u src/sys/net/lagg/if_lagg.h:1.3 src/sys/net/lagg/if_lagg.h:1.4
--- src/sys/net/lagg/if_lagg.h:1.3 Mon Nov 8 06:29:16 2021
+++ src/sys/net/lagg/if_lagg.h Thu Apr 4 07:55:32 2024
@@ -1,4 +1,4 @@
-/* $NetBSD: if_lagg.h,v 1.3 2021/11/08 06:29:16 yamaguchi Exp $ */
+/* $NetBSD: if_lagg.h,v 1.4 2024/04/04 07:55:32 yamaguchi Exp $ */
/*
* Copyright (c) 2005, 2006 Reyk Floeter <[email protected]>
@@ -184,7 +184,7 @@ struct lagg_req {
lagg_proto lrq_proto;
size_t lrq_nports;
struct laggreqproto lrq_reqproto;
- struct laggreqport lrq_reqports[1];
+ struct laggreqport lrq_reqports[];
};
#define SIOCGLAGG SIOCGIFGENERIC