[rtems-libbsd commit] pfctl: Adapt for RTEMS.
Sebastian Huber
sebh at rtems.org
Wed Aug 3 12:44:14 UTC 2016
Module: rtems-libbsd
Branch: 4.11
Commit: 4831944a2b4204c907018ad99fdaef2e48c604ad
Changeset: http://git.rtems.org/rtems-libbsd/commit/?id=4831944a2b4204c907018ad99fdaef2e48c604ad
Author: Christian Mauderer <Christian.Mauderer at embedded-brains.de>
Date: Tue Jul 5 16:31:43 2016 +0200
pfctl: Adapt for RTEMS.
---
freebsd/contrib/pf/pfctl/parse-data.h | 42 ++++++++++++++++++++
freebsd/contrib/pf/pfctl/parse.y | 4 ++
freebsd/contrib/pf/pfctl/pf_print_state.c | 3 ++
freebsd/contrib/pf/pfctl/pfctl-data.h | 26 +++++++++++++
freebsd/contrib/pf/pfctl/pfctl.c | 53 ++++++++++++++++++++++++++
freebsd/contrib/pf/pfctl/pfctl_altq-data.h | 8 ++++
freebsd/contrib/pf/pfctl/pfctl_altq.c | 6 +++
freebsd/contrib/pf/pfctl/pfctl_optimize-data.h | 13 +++++++
freebsd/contrib/pf/pfctl/pfctl_optimize.c | 10 ++++-
freebsd/contrib/pf/pfctl/pfctl_osfp-data.h | 7 ++++
freebsd/contrib/pf/pfctl/pfctl_osfp.c | 6 +++
freebsd/contrib/pf/pfctl/pfctl_parser-data.h | 3 ++
freebsd/contrib/pf/pfctl/pfctl_parser.c | 9 +++++
freebsd/contrib/pf/pfctl/pfctl_qstats-data.h | 3 ++
freebsd/contrib/pf/pfctl/pfctl_qstats.c | 6 +++
freebsd/contrib/pf/pfctl/pfctl_radix-data.h | 3 ++
freebsd/contrib/pf/pfctl/pfctl_radix.c | 9 +++++
freebsd/contrib/pf/pfctl/pfctl_table.c | 7 ++++
18 files changed, 217 insertions(+), 1 deletion(-)
diff --git a/freebsd/contrib/pf/pfctl/parse-data.h b/freebsd/contrib/pf/pfctl/parse-data.h
new file mode 100644
index 0000000..22f6295
--- /dev/null
+++ b/freebsd/contrib/pf/pfctl/parse-data.h
@@ -0,0 +1,42 @@
+#include <rtems/linkersets.h>
+
+RTEMS_LINKER_RWSET_CONTENT(bsd_prog_pfctl,
+ static struct antispoof_opts antispoof_opts);
+RTEMS_LINKER_RWSET_CONTENT(bsd_prog_pfctl, static int blockpolicy);
+RTEMS_LINKER_RWSET_CONTENT(bsd_prog_pfctl, static int debug);
+RTEMS_LINKER_RWSET_CONTENT(bsd_prog_pfctl, static int default_statelock);
+RTEMS_LINKER_RWSET_CONTENT(bsd_prog_pfctl, static struct file *file);
+RTEMS_LINKER_RWSET_CONTENT(bsd_prog_pfctl, static struct files files);
+RTEMS_LINKER_RWSET_CONTENT(bsd_prog_pfctl,
+ static struct filter_opts filter_opts);
+RTEMS_LINKER_RWSET_CONTENT(bsd_prog_pfctl,
+ static struct node_hfsc_opts hfsc_opts);
+RTEMS_LINKER_RWSET_CONTENT(bsd_prog_pfctl,
+ static struct node_state_opt *keep_state_defaults);
+RTEMS_LINKER_RWSET_CONTENT(bsd_prog_pfctl,
+ static struct loadanchorshead loadanchorshead);
+RTEMS_LINKER_RWSET_CONTENT(bsd_prog_pfctl, static char *parsebuf);
+RTEMS_LINKER_RWSET_CONTENT(bsd_prog_pfctl, static int parseindex);
+RTEMS_LINKER_RWSET_CONTENT(bsd_prog_pfctl, static struct pfctl *pf);
+RTEMS_LINKER_RWSET_CONTENT(bsd_prog_pfctl, static struct pool_opts pool_opts);
+RTEMS_LINKER_RWSET_CONTENT(bsd_prog_pfctl, static char pushback_buffer[]);
+RTEMS_LINKER_RWSET_CONTENT(bsd_prog_pfctl, static int pushback_index);
+RTEMS_LINKER_RWSET_CONTENT(bsd_prog_pfctl, static struct queue_opts queue_opts);
+RTEMS_LINKER_RWSET_CONTENT(bsd_prog_pfctl, static struct node_queue *queues);
+RTEMS_LINKER_RWSET_CONTENT(bsd_prog_pfctl, static int require_order);
+RTEMS_LINKER_RWSET_CONTENT(bsd_prog_pfctl, static u_int16_t returnicmp6default);
+RTEMS_LINKER_RWSET_CONTENT(bsd_prog_pfctl, static u_int16_t returnicmpdefault);
+RTEMS_LINKER_RWSET_CONTENT(bsd_prog_pfctl, static int rulestate);
+RTEMS_LINKER_RWSET_CONTENT(bsd_prog_pfctl, static struct scrub_opts scrub_opts);
+RTEMS_LINKER_RWSET_CONTENT(bsd_prog_pfctl, static struct symhead symhead);
+RTEMS_LINKER_RWSET_CONTENT(bsd_prog_pfctl, static struct table_opts table_opts);
+
+/* NOTE: the following variables are generated by yacc and may change with yacc
+ * version or generation options. */
+RTEMS_LINKER_RWSET_CONTENT(bsd_prog_pfctl, static YYSTACKDATA yystack);
+RTEMS_LINKER_RWSET_CONTENT(bsd_prog_pfctl, extern int yychar);
+RTEMS_LINKER_RWSET_CONTENT(bsd_prog_pfctl, extern int yydebug);
+RTEMS_LINKER_RWSET_CONTENT(bsd_prog_pfctl, extern int yyerrflag);
+RTEMS_LINKER_RWSET_CONTENT(bsd_prog_pfctl, extern YYSTYPE yylval);
+RTEMS_LINKER_RWSET_CONTENT(bsd_prog_pfctl, extern int yynerrs);
+RTEMS_LINKER_RWSET_CONTENT(bsd_prog_pfctl, extern YYSTYPE yyval);
diff --git a/freebsd/contrib/pf/pfctl/parse.y b/freebsd/contrib/pf/pfctl/parse.y
index 30bf361..df86506 100644
--- a/freebsd/contrib/pf/pfctl/parse.y
+++ b/freebsd/contrib/pf/pfctl/parse.y
@@ -29,6 +29,7 @@
%{
#ifdef __rtems__
#include <machine/rtems-bsd-user-space.h>
+#include <machine/rtems-bsd-program.h>
#define pf_find_or_create_ruleset _bsd_pf_find_or_create_ruleset
#define pf_anchor_setup _bsd_pf_anchor_setup
#define pf_remove_if_empty_ruleset _bsd_pf_remove_if_empty_ruleset
@@ -6133,3 +6134,6 @@ rt_tableid_max(void)
return (RT_TABLEID_MAX);
#endif
}
+#ifdef __rtems__
+#include "parse-data.h"
+#endif /* __rtems__ */
diff --git a/freebsd/contrib/pf/pfctl/pf_print_state.c b/freebsd/contrib/pf/pfctl/pf_print_state.c
index 142dc2d..792ea8b 100644
--- a/freebsd/contrib/pf/pfctl/pf_print_state.c
+++ b/freebsd/contrib/pf/pfctl/pf_print_state.c
@@ -32,6 +32,9 @@
*
*/
+#ifdef __rtems__
+#include <machine/rtems-bsd-program.h>
+#endif /* __rtems__ */
#include <sys/cdefs.h>
__FBSDID("$FreeBSD$");
diff --git a/freebsd/contrib/pf/pfctl/pfctl-data.h b/freebsd/contrib/pf/pfctl/pfctl-data.h
new file mode 100644
index 0000000..a7c7e49
--- /dev/null
+++ b/freebsd/contrib/pf/pfctl/pfctl-data.h
@@ -0,0 +1,26 @@
+#include <rtems/linkersets.h>
+
+RTEMS_LINKER_RWSET_CONTENT(bsd_prog_pfctl, extern int altqsupport);
+RTEMS_LINKER_RWSET_CONTENT(bsd_prog_pfctl, static char*anchoropt);
+RTEMS_LINKER_RWSET_CONTENT(bsd_prog_pfctl, static const char *clearopt);
+RTEMS_LINKER_RWSET_CONTENT(bsd_prog_pfctl, static const char *debugopt);
+RTEMS_LINKER_RWSET_CONTENT(bsd_prog_pfctl, extern int dev);
+RTEMS_LINKER_RWSET_CONTENT(bsd_prog_pfctl, static int first_title);
+RTEMS_LINKER_RWSET_CONTENT(bsd_prog_pfctl, static char*ifaceopt);
+RTEMS_LINKER_RWSET_CONTENT(bsd_prog_pfctl, static int labels);
+RTEMS_LINKER_RWSET_CONTENT(bsd_prog_pfctl, extern int loadopt);
+RTEMS_LINKER_RWSET_CONTENT(bsd_prog_pfctl, static const char *optiopt);
+RTEMS_LINKER_RWSET_CONTENT(bsd_prog_pfctl,
+ static struct pf_anchor_global pf_anchors);
+RTEMS_LINKER_RWSET_CONTENT(bsd_prog_pfctl, static const char *pf_device);
+RTEMS_LINKER_RWSET_CONTENT(bsd_prog_pfctl,
+ static struct pf_anchor pf_main_anchor);
+RTEMS_LINKER_RWSET_CONTENT(bsd_prog_pfctl, static char*rulesopt);
+RTEMS_LINKER_RWSET_CONTENT(bsd_prog_pfctl, static const char *showopt);
+RTEMS_LINKER_RWSET_CONTENT(bsd_prog_pfctl, static char*src_node_kill[2]);
+RTEMS_LINKER_RWSET_CONTENT(bsd_prog_pfctl, static int src_node_killers);
+RTEMS_LINKER_RWSET_CONTENT(bsd_prog_pfctl, static char*state_kill[2]);
+RTEMS_LINKER_RWSET_CONTENT(bsd_prog_pfctl, static int state_killers);
+RTEMS_LINKER_RWSET_CONTENT(bsd_prog_pfctl, static char*tableopt);
+RTEMS_LINKER_RWSET_CONTENT(bsd_prog_pfctl, static const char *tblcmdopt);
+RTEMS_LINKER_RWSET_CONTENT(bsd_prog_pfctl, static const char *tblcmdopt);
diff --git a/freebsd/contrib/pf/pfctl/pfctl.c b/freebsd/contrib/pf/pfctl/pfctl.c
index df59818..64d5a01 100644
--- a/freebsd/contrib/pf/pfctl/pfctl.c
+++ b/freebsd/contrib/pf/pfctl/pfctl.c
@@ -33,6 +33,19 @@
*
*/
+#ifdef __rtems__
+#include <machine/rtems-bsd-program.h>
+
+#define __need_getopt_newlib
+#include <getopt.h>
+
+/* We need some functions from kernel space. */
+#define pf_get_ruleset_number _bsd_pf_get_ruleset_number
+#define pf_init_ruleset _bsd_pf_init_ruleset
+
+#include <rtems/linkersets.h>
+#include <machine/rtems-bsd-commands.h>
+#endif /* __rtems__ */
#include <sys/cdefs.h>
__FBSDID("$FreeBSD$");
@@ -292,7 +305,11 @@ static const int nattype[3] = { PF_NAT, PF_RDR, PF_BINAT };
void
usage(void)
{
+#ifndef __rtems__
extern char *__progname;
+#else /* __rtems__ */
+#define __progname "pfctl"
+#endif /* __rtems__ */
fprintf(stderr, "usage: %s [-AdeghmNnOPqRrvz] ", __progname);
fprintf(stderr, "[-a anchor] [-D macro=value] [-F modifier]\n");
@@ -1645,6 +1662,7 @@ pfctl_init_options(struct pfctl *pf)
pf->limit[PF_LIMIT_TABLES] = PFR_KTABLE_HIWAT;
pf->limit[PF_LIMIT_TABLE_ENTRIES] = PFR_KENTRY_HIWAT;
+#ifndef __rtems__
mib[0] = CTL_HW;
#ifdef __FreeBSD__
mib[1] = HW_PHYSMEM;
@@ -1655,6 +1673,7 @@ pfctl_init_options(struct pfctl *pf)
if (sysctl(mib, 2, &mem, &size, NULL, 0) == -1)
err(1, "sysctl");
if (mem <= 100*1024*1024)
+#endif /* __rtems__ */
pf->limit[PF_LIMIT_TABLE_ENTRIES] = PFR_KENTRY_HIWAT_SMALL;
pf->debug = PF_DEBUG_URGENT;
@@ -2069,6 +2088,27 @@ pfctl_lookup_option(char *cmd, const char * const *list)
return (NULL);
}
+#ifdef __rtems__
+static int main(int argc, char *argv[]);
+
+RTEMS_LINKER_RWSET(bsd_prog_pfctl, char);
+
+int
+rtems_bsd_command_pfctl(int argc, char *argv[])
+{
+ int exit_code = EXIT_FAILURE;
+ const void *data_buf = RTEMS_LINKER_SET_BEGIN(bsd_prog_pfctl);
+ const size_t data_size = RTEMS_LINKER_SET_SIZE(bsd_prog_pfctl);
+
+ rtems_bsd_program_lock();
+ exit_code = rtems_bsd_program_call_main_with_data_restore("pfctl",
+ main, argc, argv, data_buf, data_size);
+ rtems_bsd_program_unlock();
+
+ return exit_code;
+}
+
+#endif /* __rtems__ */
int
main(int argc, char *argv[])
{
@@ -2080,6 +2120,16 @@ main(int argc, char *argv[])
char anchorname[MAXPATHLEN];
char *path;
+#ifdef __rtems__
+ struct getopt_data getopt_data;
+ memset(&getopt_data, 0, sizeof(getopt_data));
+#define optind getopt_data.optind
+#define optarg getopt_data.optarg
+#define opterr getopt_data.opterr
+#define optopt getopt_data.optopt
+#define getopt(argc, argv, opt) getopt_r(argc, argv, "+" opt, &getopt_data)
+#endif /* __rtems__ */
+
if (argc < 2)
usage();
@@ -2471,3 +2521,6 @@ main(int argc, char *argv[])
exit(error);
}
+#ifdef __rtems__
+#include "pfctl-data.h"
+#endif /* __rtems__ */
diff --git a/freebsd/contrib/pf/pfctl/pfctl_altq-data.h b/freebsd/contrib/pf/pfctl/pfctl_altq-data.h
new file mode 100644
index 0000000..49898bc
--- /dev/null
+++ b/freebsd/contrib/pf/pfctl/pfctl_altq-data.h
@@ -0,0 +1,8 @@
+#include <rtems/linkersets.h>
+
+RTEMS_LINKER_RWSET_CONTENT(bsd_prog_pfctl, static struct altqs altqs);
+RTEMS_LINKER_RWSET_CONTENT(bsd_prog_pfctl, static struct gen_sc rtsc);
+RTEMS_LINKER_RWSET_CONTENT(bsd_prog_pfctl, static struct gen_sc lssc);
+RTEMS_LINKER_RWSET_CONTENT(bsd_prog_pfctl,
+ static char r2sbuf[R2S_BUFS][RATESTR_MAX]);
+RTEMS_LINKER_RWSET_CONTENT(bsd_prog_pfctl, static int r2sidx);
diff --git a/freebsd/contrib/pf/pfctl/pfctl_altq.c b/freebsd/contrib/pf/pfctl/pfctl_altq.c
index 703bc56..7458a5c 100644
--- a/freebsd/contrib/pf/pfctl/pfctl_altq.c
+++ b/freebsd/contrib/pf/pfctl/pfctl_altq.c
@@ -20,6 +20,9 @@
* OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
*/
+#ifdef __rtems__
+#include <machine/rtems-bsd-program.h>
+#endif /* __rtems__ */
#include <sys/cdefs.h>
__FBSDID("$FreeBSD$");
@@ -1276,3 +1279,6 @@ print_hfsc_sc(const char *scname, u_int m1, u_int d, u_int m2,
if (d != 0)
printf(")");
}
+#ifdef __rtems__
+#include "pfctl_altq-data.h"
+#endif /* __rtems__ */
diff --git a/freebsd/contrib/pf/pfctl/pfctl_optimize-data.h b/freebsd/contrib/pf/pfctl/pfctl_optimize-data.h
new file mode 100644
index 0000000..1d55415
--- /dev/null
+++ b/freebsd/contrib/pf/pfctl/pfctl_optimize-data.h
@@ -0,0 +1,13 @@
+#include <rtems/linkersets.h>
+
+RTEMS_LINKER_RWSET_CONTENT(bsd_prog_pfctl, static int add_opt_table_num);
+RTEMS_LINKER_RWSET_CONTENT(bsd_prog_pfctl, static int pf_opt_create_table_num);
+RTEMS_LINKER_RWSET_CONTENT(bsd_prog_pfctl,
+ static struct pf_rule_field pf_rule_desc[]);
+RTEMS_LINKER_RWSET_CONTENT(bsd_prog_pfctl, static int
+ (*skip_comparitors[PF_SKIP_COUNT])(struct pf_rule *, struct pf_rule *));
+RTEMS_LINKER_RWSET_CONTENT(bsd_prog_pfctl,
+ static const char *skip_comparitors_names[PF_SKIP_COUNT]);
+RTEMS_LINKER_RWSET_CONTENT(bsd_prog_pfctl,
+ static struct pfr_buffer table_buffer);
+RTEMS_LINKER_RWSET_CONTENT(bsd_prog_pfctl, static int table_identifier);
diff --git a/freebsd/contrib/pf/pfctl/pfctl_optimize.c b/freebsd/contrib/pf/pfctl/pfctl_optimize.c
index 8b45936..1872fa4 100644
--- a/freebsd/contrib/pf/pfctl/pfctl_optimize.c
+++ b/freebsd/contrib/pf/pfctl/pfctl_optimize.c
@@ -18,6 +18,12 @@
* OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
*/
+#ifdef __rtems__
+#include <machine/rtems-bsd-program.h>
+
+/* We need some functions from kernel space. */
+#define pf_find_or_create_ruleset _bsd_pf_find_or_create_ruleset
+#endif /* __rtems__ */
#include <sys/cdefs.h>
__FBSDID("$FreeBSD$");
@@ -1692,4 +1698,6 @@ superblock_free(struct pfctl *pf, struct superblock *block)
superblock_free(pf, block->sb_profiled_block);
free(block);
}
-
+#ifdef __rtems__
+#include "pfctl_optimize-data.h"
+#endif /* __rtems__ */
diff --git a/freebsd/contrib/pf/pfctl/pfctl_osfp-data.h b/freebsd/contrib/pf/pfctl/pfctl_osfp-data.h
new file mode 100644
index 0000000..1ac0ee3
--- /dev/null
+++ b/freebsd/contrib/pf/pfctl/pfctl_osfp-data.h
@@ -0,0 +1,7 @@
+#include <rtems/linkersets.h>
+
+RTEMS_LINKER_RWSET_CONTENT(bsd_prog_pfctl, static int class_count);
+RTEMS_LINKER_RWSET_CONTENT(bsd_prog_pfctl, static struct name_list classes);
+RTEMS_LINKER_RWSET_CONTENT(bsd_prog_pfctl, static int fingerprint_count);
+/* There is also one static buffer called "buf". But this can be ignored. See
+ * comment in source file. */
diff --git a/freebsd/contrib/pf/pfctl/pfctl_osfp.c b/freebsd/contrib/pf/pfctl/pfctl_osfp.c
index 3183a04..2085af6 100644
--- a/freebsd/contrib/pf/pfctl/pfctl_osfp.c
+++ b/freebsd/contrib/pf/pfctl/pfctl_osfp.c
@@ -18,6 +18,9 @@
* OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
*/
+#ifdef __rtems__
+#include <machine/rtems-bsd-program.h>
+#endif /* __rtems__ */
#include <rtems/bsd/sys/types.h>
#include <sys/ioctl.h>
#include <sys/socket.h>
@@ -1125,3 +1128,6 @@ print_ioctl(struct pf_osfp_ioctl *fp)
return (buf);
}
+#ifdef __rtems__
+#include "pfctl_osfp-data.h"
+#endif /* __rtems__ */
diff --git a/freebsd/contrib/pf/pfctl/pfctl_parser-data.h b/freebsd/contrib/pf/pfctl/pfctl_parser-data.h
new file mode 100644
index 0000000..5e9ff5c
--- /dev/null
+++ b/freebsd/contrib/pf/pfctl/pfctl_parser-data.h
@@ -0,0 +1,3 @@
+#include <rtems/linkersets.h>
+
+RTEMS_LINKER_RWSET_CONTENT(bsd_prog_pfctl, static struct node_host *iftab);
diff --git a/freebsd/contrib/pf/pfctl/pfctl_parser.c b/freebsd/contrib/pf/pfctl/pfctl_parser.c
index f62fbda..0686e61 100644
--- a/freebsd/contrib/pf/pfctl/pfctl_parser.c
+++ b/freebsd/contrib/pf/pfctl/pfctl_parser.c
@@ -33,6 +33,9 @@
*
*/
+#ifdef __rtems__
+#include <machine/rtems-bsd-program.h>
+#endif /* __rtems__ */
#include <sys/cdefs.h>
__FBSDID("$FreeBSD$");
@@ -40,6 +43,9 @@ __FBSDID("$FreeBSD$");
#include <sys/ioctl.h>
#include <sys/socket.h>
#include <rtems/bsd/sys/param.h>
+#ifdef __rtems__
+#include <rtems/bsd/sys/errno.h>
+#endif /* __rtems__ */
#include <sys/proc.h>
#include <net/if.h>
#include <netinet/in.h>
@@ -1767,3 +1773,6 @@ pfctl_trans(int dev, struct pfr_buffer *buf, u_long cmd, int from)
trans.array = ((struct pfioc_trans_e *)buf->pfrb_caddr) + from;
return ioctl(dev, cmd, &trans);
}
+#ifdef __rtems__
+#include "pfctl_parser-data.h"
+#endif /* __rtems__ */
diff --git a/freebsd/contrib/pf/pfctl/pfctl_qstats-data.h b/freebsd/contrib/pf/pfctl/pfctl_qstats-data.h
new file mode 100644
index 0000000..275a184
--- /dev/null
+++ b/freebsd/contrib/pf/pfctl/pfctl_qstats-data.h
@@ -0,0 +1,3 @@
+#include <rtems/linkersets.h>
+
+RTEMS_LINKER_RWSET_CONTENT(bsd_prog_pfctl, static u_int32_t last_ticket);
diff --git a/freebsd/contrib/pf/pfctl/pfctl_qstats.c b/freebsd/contrib/pf/pfctl/pfctl_qstats.c
index 3589f6f..502b52e 100644
--- a/freebsd/contrib/pf/pfctl/pfctl_qstats.c
+++ b/freebsd/contrib/pf/pfctl/pfctl_qstats.c
@@ -18,6 +18,9 @@
* OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
*/
+#ifdef __rtems__
+#include <machine/rtems-bsd-program.h>
+#endif /* __rtems__ */
#include <sys/cdefs.h>
__FBSDID("$FreeBSD$");
@@ -455,3 +458,6 @@ update_avg(struct pf_altq_node *a)
if (n < AVGN_MAX)
qs->avgn++;
}
+#ifdef __rtems__
+#include "pfctl_qstats-data.h"
+#endif /* __rtems__ */
diff --git a/freebsd/contrib/pf/pfctl/pfctl_radix-data.h b/freebsd/contrib/pf/pfctl/pfctl_radix-data.h
new file mode 100644
index 0000000..bcb5f3b
--- /dev/null
+++ b/freebsd/contrib/pf/pfctl/pfctl_radix-data.h
@@ -0,0 +1,3 @@
+#include <rtems/linkersets.h>
+
+RTEMS_LINKER_RWSET_CONTENT(bsd_prog_pfctl, static char next_ch);
diff --git a/freebsd/contrib/pf/pfctl/pfctl_radix.c b/freebsd/contrib/pf/pfctl/pfctl_radix.c
index 7868489..0a30047 100644
--- a/freebsd/contrib/pf/pfctl/pfctl_radix.c
+++ b/freebsd/contrib/pf/pfctl/pfctl_radix.c
@@ -32,6 +32,9 @@
*
*/
+#ifdef __rtems__
+#include <machine/rtems-bsd-program.h>
+#endif /* __rtems__ */
#include <sys/cdefs.h>
__FBSDID("$FreeBSD$");
@@ -48,6 +51,9 @@ __FBSDID("$FreeBSD$");
#include <stdio.h>
#include <stdlib.h>
#include <limits.h>
+#ifdef __rtems__
+#define SIZE_T_MAX SIZE_MAX
+#endif /* __rtems__ */
#include <err.h>
#include "pfctl.h"
@@ -594,3 +600,6 @@ pfr_strerror(int errnum)
return strerror(errnum);
}
}
+#ifdef __rtems__
+#include "pfctl_radix-data.h"
+#endif /* __rtems__ */
diff --git a/freebsd/contrib/pf/pfctl/pfctl_table.c b/freebsd/contrib/pf/pfctl/pfctl_table.c
index a62b49a..a89f435 100644
--- a/freebsd/contrib/pf/pfctl/pfctl_table.c
+++ b/freebsd/contrib/pf/pfctl/pfctl_table.c
@@ -32,6 +32,9 @@
*
*/
+#ifdef __rtems__
+#include <machine/rtems-bsd-program.h>
+#endif /* __rtems__ */
#include <sys/cdefs.h>
__FBSDID("$FreeBSD$");
@@ -495,7 +498,11 @@ print_astats(struct pfr_astats *as, int dns)
void
radix_perror(void)
{
+#ifndef __rtems__
extern char *__progname;
+#else /* __rtems__ */
+#define __progname "pfctl"
+#endif /* __rtems__ */
fprintf(stderr, "%s: %s.\n", __progname, pfr_strerror(errno));
}
More information about the vc
mailing list