Home | History | Annotate | Line # | Download | only in libnpftest
npf_test.h revision 1.18
      1 /*
      2  * Public Domain.
      3  */
      4 
      5 #ifndef _LIB_NPF_TEST_H_
      6 #define _LIB_NPF_TEST_H_
      7 
      8 #ifdef _KERNEL
      9 #include <sys/types.h>
     10 #include <sys/mbuf.h>
     11 
     12 #include <netinet/in_systm.h>
     13 #include <netinet/in.h>
     14 #include <netinet6/in6.h>
     15 
     16 #include <netinet/ip.h>
     17 #include <netinet/ip6.h>
     18 #include <netinet/tcp.h>
     19 #include <netinet/udp.h>
     20 #include <netinet/ip_icmp.h>
     21 
     22 #include <net/if.h>
     23 #include <net/if_ether.h>
     24 #include <net/ethertypes.h>
     25 #endif
     26 
     27 /* Test interfaces and IP addresses. */
     28 #define	IFNAME_EXT	"npftest0"
     29 #define	IFNAME_INT	"npftest1"
     30 #define	IFNAME_TEST	"npftest2"
     31 
     32 #define	LOCAL_IP1	"10.1.1.1"
     33 #define	LOCAL_IP2	"10.1.1.2"
     34 #define	LOCAL_IP3	"10.1.1.3"
     35 
     36 /* Note: RFC 5737 compliant addresses. */
     37 #define	PUB_IP1		"192.0.2.1"
     38 #define	PUB_IP2		"192.0.2.2"
     39 #define	PUB_IP3		"192.0.2.3"
     40 
     41 #define	REMOTE_IP1	"192.0.2.101"
     42 #define	REMOTE_IP2	"192.0.2.102"
     43 #define	REMOTE_IP3	"192.0.2.103"
     44 #define	REMOTE_IP4	"192.0.2.104"
     45 
     46 #define	LOCAL_IP6	"fd01:203:405:1::1234"
     47 #define	REMOTE_IP6	"2001:db8:fefe::1010"
     48 #define	EXPECTED_IP6	"2001:db8:1:d550::1234"
     49 
     50 #define	NET_A_IP1	"10.100.7.126"
     51 #define	NET_B_IP1	"10.255.7.126"
     52 
     53 #if defined(_NPF_STANDALONE)
     54 
     55 #define	MLEN		512
     56 
     57 struct mbuf {
     58 	unsigned	m_flags;
     59 	int		m_type;
     60 	unsigned	m_len;
     61 	void *		m_next;
     62 	struct {
     63 		int	len;
     64 	} m_pkthdr;
     65 	void *		m_data;
     66 	unsigned char	m_data0[MLEN];
     67 };
     68 
     69 #define	MT_FREE			0
     70 #define	M_UNWRITABLE(m, l)	false
     71 #define	M_NOWAIT		0x00001
     72 #define M_PKTHDR		0x00002
     73 
     74 #define	m_get(x, y)		npfkern_m_get(0, MLEN)
     75 #define	m_gethdr(x, y)		npfkern_m_get(M_PKTHDR, MLEN)
     76 #define	m_length(m)		npfkern_m_length(m)
     77 #define	m_freem(m)		npfkern_m_freem(m)
     78 #define	mtod(m, t)		((t)((m)->m_data))
     79 
     80 #endif
     81 
     82 const npf_mbufops_t	npftest_mbufops;
     83 
     84 struct mbuf *	npfkern_m_get(int, int);
     85 size_t		npfkern_m_length(const struct mbuf *);
     86 void		npfkern_m_freem(struct mbuf *);
     87 
     88 void		npf_test_init(int (*)(int, const char *, void *),
     89 		    const char *(*)(int, const void *, char *, socklen_t),
     90 		    long (*)(void));
     91 void		npf_test_fini(void);
     92 int		npf_test_load(const void *, size_t, bool);
     93 ifnet_t *	npf_test_addif(const char *, bool, bool);
     94 ifnet_t *	npf_test_getif(const char *);
     95 
     96 int		npf_test_statetrack(const void *, size_t, ifnet_t *,
     97 		    bool, int64_t *);
     98 void		npf_test_conc(bool, unsigned);
     99 
    100 struct mbuf *	mbuf_getwithdata(const void *, size_t);
    101 struct mbuf *	mbuf_construct_ether(int);
    102 struct mbuf *	mbuf_construct(int);
    103 struct mbuf *	mbuf_construct6(int);
    104 void *		mbuf_return_hdrs(struct mbuf *, bool, struct ip **);
    105 void *		mbuf_return_hdrs6(struct mbuf *, struct ip6_hdr **);
    106 void		mbuf_icmp_append(struct mbuf *, struct mbuf *);
    107 
    108 bool		npf_nbuf_test(bool);
    109 bool		npf_bpf_test(bool);
    110 bool		npf_table_test(bool, void *, size_t);
    111 bool		npf_state_test(bool);
    112 
    113 bool		npf_rule_test(bool);
    114 bool		npf_conn_test(bool);
    115 bool		npf_nat_test(bool);
    116 
    117 int		npf_inet_pton(int, const char *, void *);
    118 const char *	npf_inet_ntop(int, const void *, char *, socklen_t);
    119 
    120 #endif
    121