fw.h revision 6017:7e310503019e
19243SN/A/*
211675Swendy.elsasser@arm.com * fw.h
39243SN/A *
49243SN/A * Network firewalling operations.
59243SN/A *
69243SN/A * Copyright (c) 2001 Dug Song <dugsong@monkey.org>
79243SN/A *
89243SN/A * $Id: fw.h,v 1.13 2002/12/14 04:02:36 dugsong Exp $
99243SN/A */
109243SN/A
119243SN/A#ifndef DNET_FW_H
129243SN/A#define DNET_FW_H
139243SN/A
149831SN/Astruct fw_rule {
159831SN/A        char		fw_device[INTF_NAME_LEN]; /* interface name */
169831SN/A        uint8_t		fw_op;			  /* operation */
179243SN/A        uint8_t		fw_dir;			  /* direction */
189243SN/A        uint8_t		fw_proto;		  /* IP protocol */
199243SN/A        struct addr	fw_src;			  /* src address / net */
209243SN/A        struct addr	fw_dst;			  /* dst address / net */
219243SN/A        uint16_t	fw_sport[2];		  /* range / ICMP type */
229243SN/A        uint16_t	fw_dport[2];		  /* range / ICMP code */
239243SN/A};
249243SN/A
259243SN/A#define FW_OP_ALLOW	1
269243SN/A#define FW_OP_BLOCK	2
279243SN/A
289243SN/A#define FW_DIR_IN	1
299243SN/A#define FW_DIR_OUT	2
309243SN/A
319243SN/A#define fw_pack_rule(rule, dev, op, dir, p, s, d, sp1, sp2, dp1, dp2)	\
329243SN/Ado {									\
339243SN/A        strlcpy((rule)->fw_device, dev, sizeof((rule)->fw_device));	\
349243SN/A        (rule)->fw_op = op; (rule)->fw_dir = dir;			\
359243SN/A        (rule)->fw_proto = p;						\
369243SN/A        memmove(&(rule)->fw_src, &(s), sizeof((rule)->fw_src));		\
379243SN/A        memmove(&(rule)->fw_dst, &(d), sizeof((rule)->fw_dst));		\
389243SN/A        (rule)->fw_sport[0] = sp1; (rule)->fw_sport[1] = sp2;		\
399243SN/A        (rule)->fw_dport[0] = dp1; (rule)->fw_dport[1] = dp2;		\
409243SN/A} while (0)
419243SN/A
429967SN/Atypedef struct fw_handle fw_t;
4310618SOmar.Naji@arm.com
4411555Sjungma@eit.uni-kl.detypedef int (*fw_handler)(const struct fw_rule *rule, void *arg);
4511678Swendy.elsasser@arm.com
4612266Sradhika.jagtap@arm.com__BEGIN_DECLS
479243SN/Afw_t	*fw_open(void);
489243SN/Aint	 fw_add(fw_t *f, const struct fw_rule *rule);
499243SN/Aint	 fw_delete(fw_t *f, const struct fw_rule *rule);
509243SN/Aint	 fw_loop(fw_t *f, fw_handler callback, void *arg);
5110146Sandreas.hansson@arm.comfw_t	*fw_close(fw_t *f);
529243SN/A__END_DECLS
539243SN/A
5410146Sandreas.hansson@arm.com#endif /* DNET_FW_H */
5510146Sandreas.hansson@arm.com