fw.h revision 6017:7e310503019e
16892SBrad.Beckmann@amd.com/* 26892SBrad.Beckmann@amd.com * fw.h 36892SBrad.Beckmann@amd.com * 46892SBrad.Beckmann@amd.com * Network firewalling operations. 56892SBrad.Beckmann@amd.com * 66892SBrad.Beckmann@amd.com * Copyright (c) 2001 Dug Song <dugsong@monkey.org> 76892SBrad.Beckmann@amd.com * 86892SBrad.Beckmann@amd.com * $Id: fw.h,v 1.13 2002/12/14 04:02:36 dugsong Exp $ 96892SBrad.Beckmann@amd.com */ 106892SBrad.Beckmann@amd.com 116892SBrad.Beckmann@amd.com#ifndef DNET_FW_H 126892SBrad.Beckmann@amd.com#define DNET_FW_H 136892SBrad.Beckmann@amd.com 146892SBrad.Beckmann@amd.comstruct fw_rule { 156892SBrad.Beckmann@amd.com char fw_device[INTF_NAME_LEN]; /* interface name */ 166892SBrad.Beckmann@amd.com uint8_t fw_op; /* operation */ 176892SBrad.Beckmann@amd.com uint8_t fw_dir; /* direction */ 186892SBrad.Beckmann@amd.com uint8_t fw_proto; /* IP protocol */ 196892SBrad.Beckmann@amd.com struct addr fw_src; /* src address / net */ 206892SBrad.Beckmann@amd.com struct addr fw_dst; /* dst address / net */ 216892SBrad.Beckmann@amd.com uint16_t fw_sport[2]; /* range / ICMP type */ 226892SBrad.Beckmann@amd.com uint16_t fw_dport[2]; /* range / ICMP code */ 236892SBrad.Beckmann@amd.com}; 246892SBrad.Beckmann@amd.com 256892SBrad.Beckmann@amd.com#define FW_OP_ALLOW 1 266892SBrad.Beckmann@amd.com#define FW_OP_BLOCK 2 276892SBrad.Beckmann@amd.com 286892SBrad.Beckmann@amd.com#define FW_DIR_IN 1 296892SBrad.Beckmann@amd.com#define FW_DIR_OUT 2 307564SBrad.Beckmann@amd.com 316892SBrad.Beckmann@amd.com#define fw_pack_rule(rule, dev, op, dir, p, s, d, sp1, sp2, dp1, dp2) \ 326892SBrad.Beckmann@amd.comdo { \ 336892SBrad.Beckmann@amd.com strlcpy((rule)->fw_device, dev, sizeof((rule)->fw_device)); \ 349100SBrad.Beckmann@amd.com (rule)->fw_op = op; (rule)->fw_dir = dir; \ 356892SBrad.Beckmann@amd.com (rule)->fw_proto = p; \ 366892SBrad.Beckmann@amd.com memmove(&(rule)->fw_src, &(s), sizeof((rule)->fw_src)); \ 376892SBrad.Beckmann@amd.com memmove(&(rule)->fw_dst, &(d), sizeof((rule)->fw_dst)); \ 386892SBrad.Beckmann@amd.com (rule)->fw_sport[0] = sp1; (rule)->fw_sport[1] = sp2; \ 396892SBrad.Beckmann@amd.com (rule)->fw_dport[0] = dp1; (rule)->fw_dport[1] = dp2; \ 407551SBrad.Beckmann@amd.com} while (0) 416892SBrad.Beckmann@amd.com 426892SBrad.Beckmann@amd.comtypedef struct fw_handle fw_t; 436892SBrad.Beckmann@amd.com 446892SBrad.Beckmann@amd.comtypedef int (*fw_handler)(const struct fw_rule *rule, void *arg); 456892SBrad.Beckmann@amd.com 467551SBrad.Beckmann@amd.com__BEGIN_DECLS 476892SBrad.Beckmann@amd.comfw_t *fw_open(void); 487564SBrad.Beckmann@amd.comint fw_add(fw_t *f, const struct fw_rule *rule); 497564SBrad.Beckmann@amd.comint fw_delete(fw_t *f, const struct fw_rule *rule); 507564SBrad.Beckmann@amd.comint fw_loop(fw_t *f, fw_handler callback, void *arg); 517564SBrad.Beckmann@amd.comfw_t *fw_close(fw_t *f); 527564SBrad.Beckmann@amd.com__END_DECLS 537564SBrad.Beckmann@amd.com 547538SBrad.Beckmann@amd.com#endif /* DNET_FW_H */ 557561SBrad.Beckmann@amd.com