Files
pf-linux-port/module/include/compat/net/radix.h
T
lgcosta da2e9b679a M1: compat layer + pf.ko skeleton builds against Linux 7.3.4
- pfk.h: BSD types/ioctl encoding (OpenBSD bit layout), locks (NET_LOCK=rwsem),
  pools, timeouts, mbuf shim over sk_buff, ifnet registry, toeplitz/siphash
- pfk_mod/pfk_hooks: misc /dev/pf (0600), IPv4 netfilter hook skeleton,
  DIOCGETSTATUS answered (M1 skeleton; engine ioctls land with pf_ioctl.c)
- vendorize/stage-port scripts: deterministic upstream staging with seds
  (struct renames, IFF_*->PFIFF_*, sa_len drops) logged to docs/porting-notes
- fixes: modules_prepare+Module.symvers for out-of-tree builds
2026-11-11 12:09:34 -03:00

76 lines
1.8 KiB
C

/* PFLINUX compat: <net/radix.h> — OpenBSD 8.0 radix structures/API
* (rn_*), cleaned of BSD-only syntax. Implementation: compat/radix.c
* (ported from OpenBSD 8.0 sys/net/radix.c, task T10). */
#ifndef _PFK_RADIX_H
#define _PFK_RADIX_H
#include <linux/types.h>
struct radix_mask;
struct radix_node {
struct radix_mask *rn_mklist;
struct radix_node *rn_p;
short rn_b;
char rn_bmask;
u_char rn_flags;
#define RNF_NORMAL 1
#define RNF_ROOT 2
#define RNF_ACTIVE 4
union {
struct {
caddr_t rn_Key;
caddr_t rn_Mask;
struct radix_node *rn_Dupedkey;
} rn_leaf;
struct {
int rn_Off;
struct radix_node *rn_L;
struct radix_node *rn_R;
} rn_node;
} rn_u;
};
#define rn_dupedkey rn_u.rn_leaf.rn_Dupedkey
#define rn_key rn_u.rn_leaf.rn_Key
#define rn_mask rn_u.rn_leaf.rn_Mask
#define rn_off rn_u.rn_node.rn_Off
#define rn_l rn_u.rn_node.rn_L
#define rn_r rn_u.rn_node.rn_R
struct radix_mask {
short rm_b;
char rm_unused;
u_char rm_flags;
struct radix_mask *rm_mklist;
union {
caddr_t rmu_mask;
struct radix_node *rmu_leaf;
} rm_rmu;
int rm_refs;
};
#define rm_mask rm_rmu.rmu_mask
#define rm_leaf rm_rmu.rmu_leaf
struct radix_node_head {
struct radix_node *rnh_treetop;
int rnh_addrsize;
int rnh_pktsize;
struct radix_node rnh_nodes[3];
u_int rnh_rtableid;
};
void rn_init(unsigned int);
int rn_inithead(void **, int);
int rn_walktree(struct radix_node_head *,
int (*)(struct radix_node *, void *, u_int), void *);
struct radix_node *rn_addroute(void *, void *, struct radix_node_head *,
struct radix_node [2], u_int8_t);
struct radix_node *rn_delete(void *, void *, struct radix_node_head *,
struct radix_node *);
struct radix_node *rn_lookup(void *, void *, struct radix_node_head *);
struct radix_node *rn_match(void *, struct radix_node_head *);
#endif /* _PFK_RADIX_H_ */