summaryrefslogtreecommitdiffstats
path: root/freebsd
diff options
context:
space:
mode:
authorSebastian Huber <sebastian.huber@embedded-brains.de>2020-09-07 10:03:31 +0200
committerSebastian Huber <sebastian.huber@embedded-brains.de>2020-09-10 13:24:18 +0200
commitd56d9b6d3bad428a6e002ba1eaa7255d7efcfae8 (patch)
tree1a1a2517104b61df618fed6c2505306a51ba04bc /freebsd
parentifmcstat: Import from FreeBSD (diff)
downloadrtems-libbsd-d56d9b6d3bad428a6e002ba1eaa7255d7efcfae8.tar.bz2
ifmcstat: Port to RTEMS
Diffstat (limited to 'freebsd')
-rw-r--r--freebsd/usr.sbin/ifmcstat/ifmcstat.c49
-rw-r--r--freebsd/usr.sbin/ifmcstat/printb.c5
-rw-r--r--freebsd/usr.sbin/ifmcstat/rtems-bsd-ifmcstat-data.h4
-rw-r--r--freebsd/usr.sbin/ifmcstat/rtems-bsd-ifmcstat-ifmcstat-data.h7
-rw-r--r--freebsd/usr.sbin/ifmcstat/rtems-bsd-ifmcstat-namespace.h5
-rw-r--r--freebsd/usr.sbin/ifmcstat/rtems-bsd-ifmcstat-printb-data.h4
6 files changed, 72 insertions, 2 deletions
diff --git a/freebsd/usr.sbin/ifmcstat/ifmcstat.c b/freebsd/usr.sbin/ifmcstat/ifmcstat.c
index d28e54bc..19acaf62 100644
--- a/freebsd/usr.sbin/ifmcstat/ifmcstat.c
+++ b/freebsd/usr.sbin/ifmcstat/ifmcstat.c
@@ -1,5 +1,10 @@
#include <machine/rtems-bsd-user-space.h>
+#ifdef __rtems__
+#include "rtems-bsd-ifmcstat-namespace.h"
+#include "rtems-bsd-ifmcstat-ifmcstat-data.h"
+#endif /* __rtems__ */
+
/* $KAME: ifmcstat.c,v 1.48 2006/11/15 05:13:59 itojun Exp $ */
/*-
@@ -34,6 +39,13 @@
* SUCH DAMAGE.
*/
+#ifdef __rtems__
+#define __need_getopt_newlib
+#include <getopt.h>
+#include <machine/rtems-bsd-program.h>
+#include <machine/rtems-bsd-commands.h>
+#include <rtems/libio_.h>
+#endif /* __rtems__ */
#include <sys/cdefs.h>
__FBSDID("$FreeBSD$");
@@ -112,11 +124,20 @@ union sockunion {
};
typedef union sockunion sockunion_t;
+#ifdef __rtems__
+static
+#endif /* __rtems__ */
uint32_t ifindex = 0;
+#ifdef __rtems__
+static
+#endif /* __rtems__ */
int af = AF_UNSPEC;
#ifdef WITH_KVM
int Kflag = 0;
#endif
+#ifdef __rtems__
+static
+#endif /* __rtems__ */
int vflag = 0;
#define sa_dl_equal(a1, a2) \
@@ -170,7 +191,31 @@ static const char * inm_mode(u_int mode);
static void in6_ifinfo(struct mld_ifinfo *);
static const char * inet6_n2a(struct in6_addr *, uint32_t);
#endif
+#ifdef __rtems__
+static int main(int argc, char *argv[]);
+
+RTEMS_LINKER_RWSET(bsd_prog_ifmcstat, char);
+
+int
+rtems_bsd_command_ifmcstat(int argc, char *argv[])
+{
+ int exit_code;
+ void *data_begin;
+ size_t data_size;
+
+ data_begin = RTEMS_LINKER_SET_BEGIN(bsd_prog_ifmcstat);
+ data_size = RTEMS_LINKER_SET_SIZE(bsd_prog_ifmcstat);
+
+ rtems_bsd_program_lock();
+ exit_code = rtems_bsd_program_call_main_with_data_restore("ifmcstat",
+ main, argc, argv, data_begin, data_size);
+ rtems_bsd_program_unlock();
+
+ return exit_code;
+}
+#else /* __rtems__ */
int main(int, char **);
+#endif /* __rtems__ */
static void
usage()
@@ -186,7 +231,7 @@ usage()
exit(EX_USAGE);
}
-static const char *options = "i:f:vM:N:"
+static const char * const options = "i:f:vM:N:"
#ifdef WITH_KVM
"K"
#endif
@@ -310,7 +355,7 @@ in_ifinfo(struct igmp_ifinfo *igi)
printf("\n");
}
-static const char *inm_modes[] = {
+static const char * const inm_modes[] = {
"undefined",
"include",
"exclude",
diff --git a/freebsd/usr.sbin/ifmcstat/printb.c b/freebsd/usr.sbin/ifmcstat/printb.c
index d94923fe..2c979951 100644
--- a/freebsd/usr.sbin/ifmcstat/printb.c
+++ b/freebsd/usr.sbin/ifmcstat/printb.c
@@ -1,5 +1,10 @@
#include <machine/rtems-bsd-user-space.h>
+#ifdef __rtems__
+#include "rtems-bsd-ifmcstat-namespace.h"
+#include "rtems-bsd-ifmcstat-printb-data.h"
+#endif /* __rtems__ */
+
/*-
* SPDX-License-Identifier: BSD-3-Clause
*
diff --git a/freebsd/usr.sbin/ifmcstat/rtems-bsd-ifmcstat-data.h b/freebsd/usr.sbin/ifmcstat/rtems-bsd-ifmcstat-data.h
new file mode 100644
index 00000000..e94df9c0
--- /dev/null
+++ b/freebsd/usr.sbin/ifmcstat/rtems-bsd-ifmcstat-data.h
@@ -0,0 +1,4 @@
+/* generated by userspace-header-gen.py */
+#include <rtems/linkersets.h>
+/* ifmcstat.c */
+/* printb.c */
diff --git a/freebsd/usr.sbin/ifmcstat/rtems-bsd-ifmcstat-ifmcstat-data.h b/freebsd/usr.sbin/ifmcstat/rtems-bsd-ifmcstat-ifmcstat-data.h
new file mode 100644
index 00000000..39287947
--- /dev/null
+++ b/freebsd/usr.sbin/ifmcstat/rtems-bsd-ifmcstat-ifmcstat-data.h
@@ -0,0 +1,7 @@
+/* generated by userspace-header-gen.py */
+#include <rtems/linkersets.h>
+#include "rtems-bsd-ifmcstat-data.h"
+/* ifmcstat.c */
+RTEMS_LINKER_RWSET_CONTENT(bsd_prog_ifmcstat, static int af);
+RTEMS_LINKER_RWSET_CONTENT(bsd_prog_ifmcstat, static int vflag);
+RTEMS_LINKER_RWSET_CONTENT(bsd_prog_ifmcstat, static uint32_t ifindex);
diff --git a/freebsd/usr.sbin/ifmcstat/rtems-bsd-ifmcstat-namespace.h b/freebsd/usr.sbin/ifmcstat/rtems-bsd-ifmcstat-namespace.h
new file mode 100644
index 00000000..78414818
--- /dev/null
+++ b/freebsd/usr.sbin/ifmcstat/rtems-bsd-ifmcstat-namespace.h
@@ -0,0 +1,5 @@
+/* generated by userspace-header-gen.py */
+/* ifmcstat.c */
+#define main _bsd_ifmcstat_main
+/* printb.c */
+#define printb _bsd_ifmcstat_printb
diff --git a/freebsd/usr.sbin/ifmcstat/rtems-bsd-ifmcstat-printb-data.h b/freebsd/usr.sbin/ifmcstat/rtems-bsd-ifmcstat-printb-data.h
new file mode 100644
index 00000000..3f74bd60
--- /dev/null
+++ b/freebsd/usr.sbin/ifmcstat/rtems-bsd-ifmcstat-printb-data.h
@@ -0,0 +1,4 @@
+/* generated by userspace-header-gen.py */
+#include <rtems/linkersets.h>
+#include "rtems-bsd-ifmcstat-data.h"
+/* printb.c */