--- /dev/null
+From 519aae7b91454e45b0528809e94c5008cdf0c060 Mon Sep 17 00:00:00 2001
+From: Zahari Doychev <zdoychev@maxlinear.com>
+Date: Thu, 8 Dec 2022 17:40:17 +0100
+Subject: [PATCH] mausezahn: use getopt_long instead of getopt
+
+The musl getopt stops processing the options at the first non-option
+argument comapared to the glibc variant. Using getopt_long fixes this
+problem.
+
+Signed-off-by: Zahari Doychev <zahari.doychev@linux.com>
+---
+ staging/mausezahn.c | 13 ++++++-------
+ 1 file changed, 6 insertions(+), 7 deletions(-)
+
+--- a/staging/mausezahn.c
++++ b/staging/mausezahn.c
+@@ -23,7 +23,8 @@
+ #include <sys/ioctl.h>
+ #include <netinet/in.h>
+ #include <stdarg.h>
+-
++#include <getopt.h>
++
+ #include "mz.h"
+ #include "cli.h"
+ #include "mops.h"
+@@ -447,9 +448,7 @@ int getopts (int argc, char *argv[])
+ char unit;
+
+ opterr = 1; // let getopt print error message if necessary
+-
+-
+- while ((c = getopt(argc, argv, short_options)) != -1)
++ while ((c = getopt_long(argc, argv, short_options, NULL, NULL)) != -1) {
+ switch (c) {
+ case '4':
+ tx.eth_type = 0x0800;
+@@ -646,7 +645,7 @@ int getopts (int argc, char *argv[])
+ fprintf (stderr," mz/getopts: Could not handle arguments properly!\n");
+ return 1;
+ }
+-
++ }
+ // ********************************************
+ // Handle additional arguments
+ // ********************************************
+@@ -660,8 +659,8 @@ int getopts (int argc, char *argv[])
+ "-- Verbose mode --\n"
+ "\n");
+ }
+-
+- if (argc<2) {
++
++ if (optind+2 < argc) {
+ help();
+ }
+