1 static int del_from_chain(struct ip_fw
*volatile*chainptr
, struct ip_fw
*frwl
)
3 struct ip_fw
*ftmp
,*ltmp
;
4 unsigned short tport1
,tport2
,tmpnum
;
5 char matches
,was_found
;
15 #ifdef DEBUG_IP_FIREWALL
16 printk("ip_fw_ctl: chain is empty\n");
25 while( !was_found
&& ftmp
!= NULL
)
28 if (ftmp
->fw_src
.s_addr
!=frwl
->fw_src
.s_addr
29 || ftmp
->fw_dst
.s_addr
!=frwl
->fw_dst
.s_addr
30 || ftmp
->fw_smsk
.s_addr
!=frwl
->fw_smsk
.s_addr
31 || ftmp
->fw_dmsk
.s_addr
!=frwl
->fw_dmsk
.s_addr
32 || ftmp
->fw_via
.s_addr
!=frwl
->fw_via
.s_addr
33 || ftmp
->fw_flg
!=frwl
->fw_flg
)
36 tport1
=ftmp
->fw_nsp
+ftmp
->fw_ndp
;
37 tport2
=frwl
->fw_nsp
+frwl
->fw_ndp
;
42 for (tmpnum
=0;tmpnum
< tport1
&& tmpnum
< IP_FW_MAX_PORTS
;tmpnum
++)
43 if (ftmp
->fw_pts
[tmpnum
]!=frwl
->fw_pts
[tmpnum
])
46 if (strncmp(ftmp
->fw_vianame
, frwl
->fw_vianame
, IFNAMSIZ
))
53 ltmp
->fw_next
=ftmp
->fw_next
;
59 *chainptr
=ftmp
->fw_next
;