Skip site navigation (1)Skip section navigation (2)
Date:      Thu, 4 Jan 2001 05:32:37 -0800 (PST)
From:      Jon Simola <jon@abccom.bc.ca>
To:        ipfw@freebsd.org
Subject:   Indexing IPFW rule
Message-ID:  <Pine.BSF.3.96.1010104052129.462T-200000@newmail.netbistro.com>

next in thread | raw e-mail | index | archive | help
  This message is in MIME format.  The first part should be readable text,
  while the remaining parts are likely unreadable without MIME-aware tools.
  Send mail to mime@docserver.cac.washington.edu for more info.

--0-1679715968-978615157=:462
Content-Type: TEXT/PLAIN; charset=US-ASCII


I have a bridging firewall in place, and I needed to be able to allow and deny
traffic from single IPs and change whether they're allowed or denied rather
quickly. Looking through the IPFW code at the skipto rule, I figured it
couldn't be too hard. This (very rough) code actually does the job (albeit in
only one direction currently).

It's designed to be used like:

ipfw add 9000 index 10000 ip from any to 192.168.0.0/24 in recv rl0
# make sure you don't fall through into this block of rules
ipfw add 10001 allow ip from any to any   # 192.168.0.1 will be thrown here
ipfw add 10002 deny ip from any to any   # 192.168.0.2 will be thrown here
# skip a few for readability
ipfw add 10254 deny ip from any to any   # 192.168.0.254 will be thrown here 
ipfw add 10255 allow ip from any to any   # 192.168.0.255 will be thrown here


Now, I'm hoping to garner some feedback on:
 - ways to clean up the code
 - things to improve (besides it's current unidirectional nature)
 - whether this is interesting

Oh, it's a patch against 4.2-RELEASE. Thanks!

---
Jon Simola <jon@abccom.bc.ca> | "In the near future - corporate networks
    Systems Administrator     |  reach out to the stars, electrons and light 
     ABC  Communications      |  flow throughout the universe." -- GITS

--0-1679715968-978615157=:462
Content-Type: TEXT/PLAIN; charset=US-ASCII; name="firewallindex.diff"
Content-Transfer-Encoding: BASE64
Content-ID: <Pine.BSF.3.96.1010104053237.462U@newmail.netbistro.com>
Content-Description: firewallindex.diff

DQotLS0gc3lzL25ldGluZXQvaXBfZncuYy5vcmlnCVRodSBKYW4gIDQgMDI6
Mjc6MDQgMjAwMQ0KKysrIHN5cy9uZXRpbmV0L2lwX2Z3LmMJVGh1IEphbiAg
NCAwNDozMzo1MiAyMDAxDQpAQCAtNTA2LDYgKzUwNiwxMCBAQA0KIAkJICAg
IHNucHJpbnRmKFNOUEFSR1MoYWN0aW9uMiwgMCksICJTa2lwVG8gJWQiLA0K
IAkJCWYtPmZ3X3NraXB0b19ydWxlKTsNCiAJCSAgICBicmVhazsNCisJICAg
IGNhc2UgSVBfRldfRl9JTkRFWDoNCisJCSAgICBzbnByaW50ZihTTlBBUkdT
KGFjdGlvbjIsIDApLCAiSW5kZXggJWQiLA0KKwkJCWYtPmZ3X3NraXB0b19y
dWxlKTsNCisJCSAgICBicmVhazsNCiAjaWZkZWYgRFVNTVlORVQNCiAJICAg
IGNhc2UgSVBfRldfRl9QSVBFOg0KIAkJICAgIHNucHJpbnRmKFNOUEFSR1Mo
YWN0aW9uMiwgMCksICJQaXBlICVkIiwNCkBAIC04NzgsNiArODgyLDI5IEBA
DQogfQ0KIA0KIC8qDQorICogZ2l2ZW4gYW4gaXBfZndfY2hhaW4gKiwgbG9v
a3VwX2luZGV4X3J1bGUgd2lsbCByZXR1cm4gYSBwb2ludGVyDQorICogb2Yg
dGhlIHNhbWUgdHlwZSB0byB0aGUgbmV4dCBvbmUuIFRoaXMgY2FuIGJlIGVp
dGhlciB0aGUgaW5kZXgNCisgKiB0YXJnZXQgKGZvciBpbmRleCBpbnN0cnVj
dGlvbnMpIG9yIHRoZSBuZXh0IG9uZSBpbiB0aGUgY2hhaW4gKGluDQorICog
YWxsIG90aGVyIGNhc2VzIGluY2x1ZGluZyBhIG1pc3NpbmcganVtcCB0YXJn
ZXQpLg0KKyAqIEJhY2t3YXJkIGp1bXBzIGFyZSBub3QgYWxsb3dlZCwgc28g
c3RhcnQgbG9va2luZyBmcm9tIHRoZSBuZXh0DQorICogcnVsZS4uLg0KKyAq
LyANCitzdGF0aWMgc3RydWN0IGlwX2Z3X2NoYWluICogbG9va3VwX2luZGV4
X3J1bGUoc3RydWN0IGlwX2Z3X2NoYWluICptZSwgdV9pbnQzMl90IGRzdF9p
cCk7DQorDQorc3RhdGljIHN0cnVjdCBpcF9md19jaGFpbiAqDQorbG9va3Vw
X2luZGV4X3J1bGUoc3RydWN0IGlwX2Z3X2NoYWluICptZSwgdV9pbnQzMl90
IGRzdF9pcCkNCit7DQorICAgIHN0cnVjdCBpcF9md19jaGFpbiAqY2hhaW4g
Ow0KKyAgICBpbnQgcnVsZSA9IG1lLT5ydWxlLT5md19za2lwdG9fcnVsZSAr
ICgoZHN0X2lwPj4yNCkgJiBJTl9DTEFTU0NfSE9TVCk7IC8qIGd1ZXNzLi4u
ICovDQorICAgIGlmICggKG1lLT5ydWxlLT5md19mbGcgJiBJUF9GV19GX0NP
TU1BTkQpID09IElQX0ZXX0ZfSU5ERVggKQ0KKwlmb3IgKGNoYWluID0gbWUt
PmNoYWluLmxlX25leHQ7IGNoYWluIDsgY2hhaW4gPSBjaGFpbi0+Y2hhaW4u
bGVfbmV4dCApDQorCSAgICBpZiAoY2hhaW4tPnJ1bGUtPmZ3X251bWJlciA+
PSBydWxlKQ0KKyAgICAgICAgICAgICAgICByZXR1cm4gY2hhaW4gOw0KKyAg
ICByZXR1cm4gbWUtPmNoYWluLmxlX25leHQgOyAvKiBmYWlsdXJlIG9yIG5v
dCBhIHNraXB0byAqLw0KK30NCisNCisNCisvKg0KICAqIFBhcmFtZXRlcnM6
DQogICoNCiAgKglwaXAJUG9pbnRlciB0byBwYWNrZXQgaGVhZGVyIChzdHJ1
Y3QgaXAgKiopDQpAQCAtMTMwNCw2ICsxMzMxLDEzIEBADQogCQkJICAgIGNo
YWluID0gbG9va3VwX25leHRfcnVsZShjaGFpbikgOw0KIAkJCWlmICghIGNo
YWluKSBnb3RvIGRyb3BpdDsNCiAJCQlnb3RvIGFnYWluIDsNCisJCWNhc2Ug
SVBfRldfRl9JTkRFWDogLyogZHN0X2lwICovDQorCQkJaWYgKCBmLT5uZXh0
X3J1bGVfcHRyICkNCisJCQkgICAgY2hhaW4gPSBmLT5uZXh0X3J1bGVfcHRy
IDsNCisJCQllbHNlDQorCQkJICAgIGNoYWluID0gbG9va3VwX2luZGV4X3J1
bGUoY2hhaW4sIGRzdF9pcC5zX2FkZHIpIDsNCisJCQlpZiAoISBjaGFpbikg
Z290byBkcm9waXQ7DQorCQkJZ290byBhZ2FpbiA7DQogI2lmZGVmIERVTU1Z
TkVUDQogCQljYXNlIElQX0ZXX0ZfUElQRToNCiAJCWNhc2UgSVBfRldfRl9R
VUVVRToNCkBAIC0xNzQ0LDYgKzE3NzgsNyBAQA0KIAljYXNlIElQX0ZXX0Zf
QUNDRVBUOg0KIAljYXNlIElQX0ZXX0ZfQ09VTlQ6DQogCWNhc2UgSVBfRldf
Rl9TS0lQVE86DQorCWNhc2UgSVBfRldfRl9JTkRFWDoNCiAjaWZkZWYgSVBG
SVJFV0FMTF9GT1JXQVJEDQogCWNhc2UgSVBfRldfRl9GV0Q6DQogI2VuZGlm
DQoNCi0tLSBzeXMvbmV0aW5ldC9pcF9mdy5oLm9yaWcJTW9uIEF1ZyAyMSAx
NzozMzoxOCAyMDAwDQorKysgc3lzL25ldGluZXQvaXBfZncuaAlUaHUgSmFu
ICA0IDAyOjI2OjA4IDIwMDENCkBAIC0xNjgsNiArMTY4LDcgQEANCiAjZGVm
aW5lIElQX0ZXX0ZfRldECTB4MDAwMDAwMDcJLyogVGhpcyBpcyBhICJjaGFu
Z2UgZm9yd2FyZGluZyBhZGRyZXNzIiBydWxlICovDQogI2RlZmluZSBJUF9G
V19GX1BJUEUJMHgwMDAwMDAwOAkvKiBUaGlzIGlzIGEgZHVtbXluZXQgcnVs
ZSAqLw0KICNkZWZpbmUgSVBfRldfRl9RVUVVRQkweDAwMDAwMDA5CS8qIFRo
aXMgaXMgYSBkdW1teW5ldCBxdWV1ZSAqLw0KKyNkZWZpbmUgSVBfRldfRl9J
TkRFWAkweDAwMDAwMDBBCS8qIFRoaXMgaXMgYSBpbmRleCBydWxlICovDQog
DQogI2RlZmluZSBJUF9GV19GX0lOCTB4MDAwMDAxMDAJLyogQ2hlY2sgaW5i
b3VuZCBwYWNrZXRzCQkqLw0KICNkZWZpbmUgSVBfRldfRl9PVVQJMHgwMDAw
MDIwMAkvKiBDaGVjayBvdXRib3VuZCBwYWNrZXRzCQkqLw0KDQotLS0gc2Jp
bi9pcGZ3L2lwZncuYy5vcmlnCVRodSBKYW4gIDQgMDM6MDI6MjQgMjAwMQ0K
KysrIHNiaW4vaXBmdy9pcGZ3LmMJVGh1IEphbiAgNCAwMzowNDoyMCAyMDAx
DQpAQCAtMjQxLDYgKzI0MSw5IEBADQogCQljYXNlIElQX0ZXX0ZfU0tJUFRP
Og0KIAkJCXByaW50Zigic2tpcHRvICV1IiwgY2hhaW4tPmZ3X3NraXB0b19y
dWxlKTsNCiAJCQlicmVhazsNCisJCWNhc2UgSVBfRldfRl9JTkRFWDoNCisJ
CQlwcmludGYoImluZGV4ICV1IiwgY2hhaW4tPmZ3X3NraXB0b19ydWxlKTsN
CisJCQlicmVhazsNCiAgICAgICAgICAgICAgICAgY2FzZSBJUF9GV19GX1BJ
UEU6DQogICAgICAgICAgICAgICAgICAgICAgICAgcHJpbnRmKCJwaXBlICV1
IiwgY2hhaW4tPmZ3X3NraXB0b19ydWxlKTsNCiAgICAgICAgICAgICAgICAg
ICAgICAgICBicmVhayA7DQpAQCAtMTY0OCw2ICsxNjUxLDExIEBADQogCQly
dWxlLmZ3X2ZsZyB8PSBJUF9GV19GX1NLSVBUTzsgYXYrKzsgYWMtLTsNCiAJ
CWlmICghYWMpDQogCQkJc2hvd191c2FnZSgibWlzc2luZyBza2lwdG8gcnVs
ZSBudW1iZXIiKTsNCisJCXJ1bGUuZndfc2tpcHRvX3J1bGUgPSBzdHJ0b3Vs
KCphdiwgTlVMTCwgMCk7IGF2Kys7IGFjLS07DQorCX0gZWxzZSBpZiAoIXN0
cm5jbXAoKmF2LCJpbmRleCIsc3RybGVuKCphdikpKSB7DQorCQlydWxlLmZ3
X2ZsZyB8PSBJUF9GV19GX0lOREVYOyBhdisrOyBhYy0tOw0KKwkJaWYgKCFh
YykNCisJCQlzaG93X3VzYWdlKCJtaXNzaW5nIGluZGV4IHJ1bGUgbnVtYmVy
Iik7DQogCQlydWxlLmZ3X3NraXB0b19ydWxlID0gc3RydG91bCgqYXYsIE5V
TEwsIDApOyBhdisrOyBhYy0tOw0KIAl9IGVsc2UgaWYgKCghc3RybmNtcCgq
YXYsImRlbnkiLHN0cmxlbigqYXYpKQ0KIAkJICAgIHx8ICFzdHJuY21wKCph
diwiZHJvcCIsc3RybGVuKCphdikpKSkgew0KDQo=
--0-1679715968-978615157=:462--


To Unsubscribe: send mail to majordomo@FreeBSD.org
with "unsubscribe freebsd-ipfw" in the body of the message




Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?Pine.BSF.3.96.1010104052129.462T-200000>