op3
ip_fw3_opheader *op3;
op3 = (ip_fw3_opheader *)rulebuf;
ctlv = (ipfw_obj_ctlv *)(op3 + 1);
op3 = (ip_fw3_opheader *)tbuf;
ctlv = (ipfw_obj_ctlv *)(op3 + 1);
if (do_get3(IP_FW_XADD, op3, &sz) != 0)
do_set3(int optname, ip_fw3_opheader *op3, size_t optlen)
op3->opcode = optname;
op3->version = IP_FW3_OPVER; /* use last version */
write(1, op3, optlen);
return (setsockopt(ipfw_socket, IPPROTO_IP, IP_FW3, op3, optlen));
do_get3(int optname, ip_fw3_opheader *op3, size_t *optlen)
op3->opcode = optname;
op3->version = IP_FW3_OPVER; /* use last version */
write(1, op3, *optlen);
error = getsockopt(ipfw_socket, IPPROTO_IP, IP_FW3, op3, &len);
int do_set3(int optname, struct _ip_fw3_opheader *op3, size_t optlen);
int do_get3(int optname, struct _ip_fw3_opheader *op3, size_t *optlen);
/*a4*/ { "shld", true, LONG, op3(Ib,R,E), 0 },
/*a5*/ { "shld", true, LONG, op3(CL,R,E), 0 },
/*ac*/ { "shrd", true, LONG, op3(Ib,R,E), 0 },
/*ad*/ { "shrd", true, LONG, op3(CL,R,E), 0 },
/*69*/ { "imul", true, LONG, op3(I,E,R), 0 },
/*6b*/ { "imul", true, LONG, op3(Ibs,E,R),0 },
char op1[8], op2[8], op3[8];
cmd, op1, &val1, op2, &val2, op3, &val3);
if (!vs1 && !strcmp(op3, "offset")) {
} else if (!vs2 && !strcmp(op3, "nbytes")) {
} else if (!vs3 && !strcmp(op3, "pattern")) {
/*a4*/ { "shld", true, LONG, op3(Ib,R,E), 0 },
/*a5*/ { "shld", true, LONG, op3(CL,R,E), 0 },
/*ac*/ { "shrd", true, LONG, op3(Ib,R,E), 0 },
/*ad*/ { "shrd", true, LONG, op3(CL,R,E), 0 },
/*69*/ { "imul", true, LONG, op3(I,E,R), 0 },
/*6b*/ { "imul", true, LONG, op3(Ibs,E,R),0 },
dump_config_v0(struct ip_fw_chain *chain, ip_fw3_opheader *op3,
parse_rules_v0(struct ip_fw_chain *chain, ip_fw3_opheader *op3,
op3 = (ip_fw3_opheader *)ipfw_get_sopt_space(sd, sd->valsize);
ctlv = (ipfw_obj_ctlv *)(op3 + 1);
add_rules_v0(struct ip_fw_chain *chain, ip_fw3_opheader *op3,
ret = parse_rules_v0(chain, op3, sd, &rtlv, &nci);
del_rules_v0(struct ip_fw_chain *chain, ip_fw3_opheader *op3,
clear_rules_v0(struct ip_fw_chain *chain, ip_fw3_opheader *op3,
move_rules_v0(struct ip_fw_chain *chain, ip_fw3_opheader *op3,
manage_sets_v0(struct ip_fw_chain *chain, ip_fw3_opheader *op3,
dump_soptcodes_v0(struct ip_fw_chain *chain, ip_fw3_opheader *op3,
dump_srvobjects_v0(struct ip_fw_chain *chain, ip_fw3_opheader *op3,
list_ifaces(struct ip_fw_chain *ch, ip_fw3_opheader *op3,
static int list_ifaces(struct ip_fw_chain *ch, ip_fw3_opheader *op3,
nat44_cfg(struct ip_fw_chain *chain, ip_fw3_opheader *op3,
nat44_destroy(struct ip_fw_chain *chain, ip_fw3_opheader *op3,
nat44_get_cfg(struct ip_fw_chain *chain, ip_fw3_opheader *op3,
nat44_list_nat(struct ip_fw_chain *chain, ip_fw3_opheader *op3,
nat44_get_log(struct ip_fw_chain *chain, ip_fw3_opheader *op3,
del_rules(struct ip_fw_chain *chain, ip_fw3_opheader *op3,
move_rules(struct ip_fw_chain *chain, ip_fw3_opheader *op3,
clear_rules(struct ip_fw_chain *chain, ip_fw3_opheader *op3,
log_only = (op3->opcode == IP_FW_XRESETLOG);
manage_sets(struct ip_fw_chain *chain, ip_fw3_opheader *op3,
if (op3->opcode != IP_FW_SET_ENABLE &&
switch (op3->opcode) {
op3->opcode == IP_FW_SET_MOVE);
dump_config(struct ip_fw_chain *chain, ip_fw3_opheader *op3,
parse_rules_v1(struct ip_fw_chain *chain, ip_fw3_opheader *op3,
op3 = (ip_fw3_opheader *)ipfw_get_sopt_space(sd, sd->valsize);
ctlv = (ipfw_obj_ctlv *)(op3 + 1);
add_rules(struct ip_fw_chain *chain, ip_fw3_opheader *op3,
ret = parse_rules_v1(chain, op3, sd, &rtlv, &nci);
dump_soptcodes(struct ip_fw_chain *chain, ip_fw3_opheader *op3,
dump_srvobjects(struct ip_fw_chain *chain, ip_fw3_opheader *op3,
manage_skiptocache(struct ip_fw_chain *chain, ip_fw3_opheader *op3,
ip_fw3_opheader *op3 = NULL;
op3 = (ip_fw3_opheader *)xbuf;
error = sooptcopyin(sopt, op3, sizeof(*op3), sizeof(*op3));
error = find_ref_sh(op3->opcode, op3->version, &h);
op3 = (ip_fw3_opheader *)sdata.kbuf;
error = h.handler(chain, op3, &sdata);
swap_table(struct ip_fw_chain *ch, ip_fw3_opheader *op3,
oh = (struct _ipfw_obj_header *)op3;
list_tables(struct ip_fw_chain *ch, ip_fw3_opheader *op3,
describe_table(struct ip_fw_chain *ch, ip_fw3_opheader *op3,
modify_table(struct ip_fw_chain *ch, ip_fw3_opheader *op3,
create_table(struct ip_fw_chain *ch, ip_fw3_opheader *op3,
dump_table_v1(struct ip_fw_chain *ch, ip_fw3_opheader *op3,
list_table_algo(struct ip_fw_chain *ch, ip_fw3_opheader *op3,
manage_table_ent_v1(struct ip_fw_chain *ch, ip_fw3_opheader *op3,
find_table_entry(struct ip_fw_chain *ch, ip_fw3_opheader *op3,
flush_table_v0(struct ip_fw_chain *ch, ip_fw3_opheader *op3,
oh = (struct _ipfw_obj_header *)op3;
if (op3->opcode == IP_FW_TABLE_XDESTROY)
else if (op3->opcode == IP_FW_TABLE_XFLUSH)
list_table_values(struct ip_fw_chain *ch, ip_fw3_opheader *op3,
static int list_table_values(struct ip_fw_chain *ch, ip_fw3_opheader *op3,
nat64clat_create(struct ip_fw_chain *ch, ip_fw3_opheader *op3,
nat64clat_destroy(struct ip_fw_chain *ch, ip_fw3_opheader *op3,
nat64clat_list(struct ip_fw_chain *ch, ip_fw3_opheader *op3,
nat64lsn_create(struct ip_fw_chain *ch, ip_fw3_opheader *op3,
nat64lsn_destroy(struct ip_fw_chain *ch, ip_fw3_opheader *op3,
oh = (ipfw_obj_header *)op3;
nat64lsn_list(struct ip_fw_chain *ch, ip_fw3_opheader *op3,
nat64lsn_states(struct ip_fw_chain *ch, ip_fw3_opheader *op3,
nat64stl_create(struct ip_fw_chain *ch, ip_fw3_opheader *op3,
nat64stl_destroy(struct ip_fw_chain *ch, ip_fw3_opheader *op3,
nat64stl_list(struct ip_fw_chain *ch, ip_fw3_opheader *op3,
nptv6_create(struct ip_fw_chain *ch, ip_fw3_opheader *op3,
nptv6_destroy(struct ip_fw_chain *ch, ip_fw3_opheader *op3,
nptv6_list(struct ip_fw_chain *ch, ip_fw3_opheader *op3,