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