From d56d9b6d3bad428a6e002ba1eaa7255d7efcfae8 Mon Sep 17 00:00:00 2001 From: Sebastian Huber Date: Mon, 7 Sep 2020 10:03:31 +0200 Subject: ifmcstat: Port to RTEMS --- freebsd/usr.sbin/ifmcstat/ifmcstat.c | 49 +++++++++++++++++++++- freebsd/usr.sbin/ifmcstat/printb.c | 5 +++ .../usr.sbin/ifmcstat/rtems-bsd-ifmcstat-data.h | 4 ++ .../ifmcstat/rtems-bsd-ifmcstat-ifmcstat-data.h | 7 ++++ .../ifmcstat/rtems-bsd-ifmcstat-namespace.h | 5 +++ .../ifmcstat/rtems-bsd-ifmcstat-printb-data.h | 4 ++ 6 files changed, 72 insertions(+), 2 deletions(-) create mode 100644 freebsd/usr.sbin/ifmcstat/rtems-bsd-ifmcstat-data.h create mode 100644 freebsd/usr.sbin/ifmcstat/rtems-bsd-ifmcstat-ifmcstat-data.h create mode 100644 freebsd/usr.sbin/ifmcstat/rtems-bsd-ifmcstat-namespace.h create mode 100644 freebsd/usr.sbin/ifmcstat/rtems-bsd-ifmcstat-printb-data.h (limited to 'freebsd') 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 +#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 +#include +#include +#include +#endif /* __rtems__ */ #include __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 +#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 +/* 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 +#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 +#include "rtems-bsd-ifmcstat-data.h" +/* printb.c */ -- cgit v1.2.3