Skip site navigation (1)Skip section navigation (2)
Date:      Mon, 27 Sep 2010 20:50:07 +0530
From:      Paul Joe <apauljoe@gmail.com>
To:        freebsd-net@freebsd.org
Cc:        Luigi Rizzo <rizzo@iet.unipi.it>
Subject:   Extending dummynet/ipfw
Message-ID:  <AANLkTi=GozyQv%2BxuXS7xT6Kzaa7XaFxAOrihKdKdnCge@mail.gmail.com>

next in thread | raw e-mail | index | archive | help
--00c09f8a501e74fc4f04913f434e
Content-Type: text/plain; charset=ISO-8859-1

Hi,

I have attached a patch which allows to do flow classifications in userland
(e.g based on url categories, LDAP users)
and do bandwidth control in kernel(dummynet).

The patch has

a) a setsocketopt, to associate a pipe to the socket.

b) an ipfw option(sockarg) to redirect flows to corresponding pipe.

Moreover, a member uint32_t is added to struct socket to hold the pipe info.

I guess this structure is not part of kernel userland ABI.

Please let me know your comments, which I would be glad to incorporate

Thanks,
Joe.

--00c09f8a501e74fc4f04913f434e
Content-Type: application/octet-stream; name=ipfwpatch
Content-Disposition: attachment; filename=ipfwpatch
Content-Transfer-Encoding: base64
X-Attachment-Id: f_gelhemj40

SW5kZXg6IHNiaW4vaXBmdy9pcGZ3Mi5jCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KUkNTIGZpbGU6IC9ob21lL25jdnMv
c3JjL3NiaW4vaXBmdy9pcGZ3Mi5jLHYKcmV0cmlldmluZyByZXZpc2lvbiAxLjE1OQpkaWZmIC1j
IC11IC1yMS4xNTkgaXBmdzIuYwotLS0gc2Jpbi9pcGZ3L2lwZncyLmMJMTkgQXByIDIwMTAgMTY6
MzU6NDcgLTAwMDAJMS4xNTkKKysrIHNiaW4vaXBmdy9pcGZ3Mi5jCTI3IFNlcCAyMDEwIDE0OjI1
OjQ3IC0wMDAwCkBAIC0yNjYsNiArMjY2LDcgQEAKIAl7ICJlc3RhYiIsCQlUT0tfRVNUQUIgfSwK
IAl7ICJlc3RhYmxpc2hlZCIsCVRPS19FU1RBQiB9LAogCXsgInNldHVwIiwJCVRPS19TRVRVUCB9
LAorCXsgInNvY2thcmciLAkJVE9LX1NPQ0tBUkcgfSwKIAl7ICJ0Y3BkYXRhbGVuIiwJCVRPS19U
Q1BEQVRBTEVOIH0sCiAJeyAidGNwZmxhZ3MiLAkJVE9LX1RDUEZMQUdTIH0sCiAJeyAidGNwZmxn
cyIsCQlUT0tfVENQRkxBR1MgfSwKQEAgLTEzMzgsNiArMTMzOSw5IEBACiAJCQljYXNlIE9fRklC
OgogCQkJCXByaW50ZigiIGZpYiAldSIsIGNtZC0+YXJnMSApOwogCQkJCWJyZWFrOworCQkJY2Fz
ZSBPX1NPQ0tBUkc6CisJCQkJcHJpbnRmKCIgc29ja2FyZyIpOworCQkJCWJyZWFrOwogCiAJCQlj
YXNlIE9fSU46CiAJCQkJcHJpbnRmKGNtZC0+bGVuICYgRl9OT1QgPyAiIG91dCIgOiAiIGluIik7
CkBAIC0zNTMxLDYgKzM1MzUsOSBAQAogCQkJZmlsbF9jbWQoY21kLCBPX0ZJQiwgMCwgc3RydG91
bCgqYXYsIE5VTEwsIDApKTsKIAkJCWF2Kys7CiAJCQlicmVhazsKKwkJY2FzZSBUT0tfU09DS0FS
RzoKKwkJCWZpbGxfY21kKGNtZCwgT19TT0NLQVJHLCAwLCAwKTsKKwkJCWJyZWFrOwogCiAJCWNh
c2UgVE9LX0xPT0tVUDogewogCQkJaXBmd19pbnNuX3UzMiAqYyA9IChpcGZ3X2luc25fdTMyICop
Y21kOwpJbmRleDogc2Jpbi9pcGZ3L2lwZncyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpSQ1MgZmlsZTogL2hvbWUv
bmN2cy9zcmMvc2Jpbi9pcGZ3L2lwZncyLmgsdgpyZXRyaWV2aW5nIHJldmlzaW9uIDEuMTMKZGlm
ZiAtYyAtdSAtcjEuMTMgaXBmdzIuaAotLS0gc2Jpbi9pcGZ3L2lwZncyLmgJMTkgQXByIDIwMTAg
MTU6MTE6NDUgLTAwMDAJMS4xMworKysgc2Jpbi9pcGZ3L2lwZncyLmgJMjcgU2VwIDIwMTAgMTQ6
MjU6NDcgLTAwMDAKQEAgLTE5OSw2ICsxOTksNyBAQAogCVRPS19GSUIsCiAJVE9LX1NFVEZJQiwK
IAlUT0tfTE9PS1VQLAorCVRPS19TT0NLQVJHLAogfTsKIC8qCiAgKiB0aGUgZm9sbG93aW5nIG1h
Y3JvIHJldHVybnMgYW4gZXJyb3IgbWVzc2FnZSBpZiB3ZSBydW4gb3V0IG9mCkluZGV4OiBzeXMv
a2Vybi91aXBjX3NvY2tldC5jCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KUkNTIGZpbGU6IC9ob21lL25jdnMvc3JjL3N5
cy9rZXJuL3VpcGNfc29ja2V0LmMsdgpyZXRyaWV2aW5nIHJldmlzaW9uIDEuMzUwCmRpZmYgLWMg
LXUgLXIxLjM1MCB1aXBjX3NvY2tldC5jCi0tLSBzeXMva2Vybi91aXBjX3NvY2tldC5jCTE4IFNl
cCAyMDEwIDExOjE4OjQyIC0wMDAwCTEuMzUwCisrKyBzeXMva2Vybi91aXBjX3NvY2tldC5jCTI3
IFNlcCAyMDEwIDE0OjI1OjUyIC0wMDAwCkBAIC0xMjMsNiArMTIzLDggQEAKICNpbmNsdWRlIDxz
eXMvc29ja2V0dmFyLmg+CiAjaW5jbHVkZSA8c3lzL3Jlc291cmNldmFyLmg+CiAjaW5jbHVkZSA8
bmV0L3JvdXRlLmg+CisjaW5jbHVkZSA8bmV0aW5ldC9pbi5oPgorI2luY2x1ZGUgPG5ldGluZXQv
aXBfdmFyLmg+CiAjaW5jbHVkZSA8c3lzL3NpZ25hbHZhci5oPgogI2luY2x1ZGUgPHN5cy9zdGF0
Lmg+CiAjaW5jbHVkZSA8c3lzL3N4Lmg+CkBAIC0yNDYxLDYgKzI0NjMsMjUgQEAKIAkJCQlzby0+
c29fZmlibnVtID0gMDsKIAkJCX0KIAkJCWJyZWFrOworCisJCWNhc2UgU09fVVNFUl9DT09LSUU6
CisJCQlpZihpcF9kbl9pb19wdHIgPT0gTlVMTCl7CisJCQkJZXJyb3IgPSBFTk9QUk9UT09QVDsK
KwkJCQlnb3RvIGJhZDsKKwkJCX0KKworCQkJZXJyb3IgPSBzb29wdGNvcHlpbihzb3B0LCAmb3B0
dmFsLCBzaXplb2Ygb3B0dmFsLAorCQkJCQkJc2l6ZW9mIG9wdHZhbCk7CisJCQlpZiAob3B0dmFs
IDwgMCB8fCBlcnJvciApeworCQkJCWVycm9yPSBFSU5WQUw7IAorCQkJCWdvdG8gYmFkOworCQkJ
fQorCQorCQkJaWYoc28tPnNvX3Byb3RvLT5wcl9kb21haW4tPmRvbV9mYW1pbHkgPT0gUEZfSU5F
VCkgCisJCQkJc28tPnNvX3VzZXJfY29va2llID0gKHVpbnQzMl90KW9wdHZhbDsKKwkJCQorCQkJ
YnJlYWs7CisKIAkJY2FzZSBTT19TTkRCVUY6CiAJCWNhc2UgU09fUkNWQlVGOgogCQljYXNlIFNP
X1NORExPV0FUOgpJbmRleDogc3lzL25ldGluZXQvaXBfZncuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClJDUyBmaWxl
OiAvaG9tZS9uY3ZzL3NyYy9zeXMvbmV0aW5ldC9pcF9mdy5oLHYKcmV0cmlldmluZyByZXZpc2lv
biAxLjEzOApkaWZmIC1jIC11IC1yMS4xMzggaXBfZncuaAotLS0gc3lzL25ldGluZXQvaXBfZncu
aAkxNSBNYXIgMjAxMCAxNzoxNDoyNyAtMDAwMAkxLjEzOAorKysgc3lzL25ldGluZXQvaXBfZncu
aAkyNyBTZXAgMjAxMCAxNDoyNTo1MyAtMDAwMApAQCAtMTkyLDEwICsxOTIsMTMgQEAKIAogCU9f
U0VURklCLAkJLyogYXJnMT1GSUIgbnVtYmVyICovCiAJT19GSUIsCQkJLyogYXJnMT1GSUIgZGVz
aXJlZCBmaWIgbnVtYmVyICovCisJCisJT19TT0NLQVJHLAkJLyogc29ja2V0IGFyZ3VtZW50ICov
CiAKIAlPX0xBU1RfT1BDT0RFCQkvKiBub3QgYW4gb3Bjb2RlIQkJKi8KIH07CiAKKwogLyoKICAq
IFRoZSBleHRlbnNpb24gaGVhZGVyIGFyZSBmaWx0ZXJlZCBvbmx5IGZvciBwcmVzZW5jZSB1c2lu
ZyBhIGJpdAogICogdmVjdG9yIHdpdGggYSBmbGFnIGZvciBlYWNoIGhlYWRlci4KSW5kZXg6IHN5
cy9uZXRpbmV0L2lwZncvaXBfZncyLmMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpSQ1MgZmlsZTogL2hvbWUvbmN2cy9z
cmMvc3lzL25ldGluZXQvaXBmdy9pcF9mdzIuYyx2CnJldHJpZXZpbmcgcmV2aXNpb24gMS40NQpk
aWZmIC1jIC11IC1yMS40NSBpcF9mdzIuYwotLS0gc3lzL25ldGluZXQvaXBmdy9pcF9mdzIuYwky
NyBKdWwgMjAxMCAxNDoyNjozNCAtMDAwMAkxLjQ1CisrKyBzeXMvbmV0aW5ldC9pcGZ3L2lwX2Z3
Mi5jCTI3IFNlcCAyMDEwIDE0OjI1OjU2IC0wMDAwCkBAIC0xODAxLDYgKzE4MDEsMzkgQEAKIAkJ
CQkJbWF0Y2ggPSAxOwogCQkJCWJyZWFrOwogCisJCQljYXNlIE9fU09DS0FSRzoJeworCQkJCXN0
cnVjdCBpbnBjYiAqaW5wID0gYXJncy0+aW5wOworCQkJCXN0cnVjdCBpbnBjYmluZm8gKnBpOwor
CQkJCQorCQkJCWlmKGlzX2lwdjYpCisJCQkJCWJyZWFrOworCisJCQkJaWYocHJvdG8gPT0gSVBQ
Uk9UT19UQ1ApCisJCQkJCXBpID0gJlZfdGNiaW5mbzsKKwkJCQllbHNlIGlmIChwcm90byA9PSBJ
UFBST1RPX1VEUCkKKwkJCQkJcGkgPSAmVl91ZGJpbmZvOworCQkJCWVsc2UKKwkJCQkJYnJlYWs7
CisKKwkJCQkvKiBGb3IgaW5jb21taW5nIHBhY2tldCwgbG9va3VwIHVwIHRoZSAKKwkJCQlpbnBj
YiB1c2luZyB0aGUgc3JjL2Rlc3QgaXAvcG9ydCB0dXBsZSAqLworCQkJCWlmKGlucCA9PSBOVUxM
KSB7CisJCQkJCUlOUF9JTkZPX1JMT0NLKHBpKTsKKwkJCQkJaW5wID0gaW5fcGNibG9va3VwX2hh
c2gocGksIAorCQkJCQkJc3JjX2lwLCBodG9ucyhzcmNfcG9ydCksCisJCQkJCQlkc3RfaXAsIGh0
b25zKGRzdF9wb3J0KSwKKwkJCQkJCTAsIE5VTEwpOworCQkJCQlJTlBfSU5GT19SVU5MT0NLKHBp
KTsKKwkJCQl9CisJCQkJCisJCQkJaWYoaW5wICYmIGlucC0+aW5wX3NvY2tldCkgeworCQkJCQl0
YWJsZWFyZyA9IGlucC0+aW5wX3NvY2tldC0+c29fdXNlcl9jb29raWU7CisJCQkJCWlmKHRhYmxl
YXJnKQorCQkJCQkJbWF0Y2ggPSAxOworCQkJCX0KKwkJCQlicmVhazsKKwkJCX0KKwogCQkJY2Fz
ZSBPX1RBR0dFRDogewogCQkJCXN0cnVjdCBtX3RhZyAqbXRhZzsKIAkJCQl1aW50MzJfdCB0YWcg
PSAoY21kLT5hcmcxID09IElQX0ZXX1RBQkxFQVJHKSA/CkluZGV4OiBzeXMvbmV0aW5ldC9pcGZ3
L2lwX2Z3X3NvY2tvcHQuYwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09ClJDUyBmaWxlOiAvaG9tZS9uY3ZzL3NyYy9zeXMv
bmV0aW5ldC9pcGZ3L2lwX2Z3X3NvY2tvcHQuYyx2CnJldHJpZXZpbmcgcmV2aXNpb24gMS4xNwpk
aWZmIC1jIC11IC1yMS4xNyBpcF9md19zb2Nrb3B0LmMKLS0tIHN5cy9uZXRpbmV0L2lwZncvaXBf
Zndfc29ja29wdC5jCTcgQXByIDIwMTAgMDg6MjM6NTggLTAwMDAJMS4xNworKysgc3lzL25ldGlu
ZXQvaXBmdy9pcF9md19zb2Nrb3B0LmMJMjcgU2VwIDIwMTAgMTQ6MjU6NTggLTAwMDAKQEAgLTU3
Miw2ICs1NzIsNyBAQAogCQljYXNlIE9fSVBUT1M6CiAJCWNhc2UgT19JUFBSRUNFREVOQ0U6CiAJ
CWNhc2UgT19JUFZFUjoKKwkJY2FzZSBPX1NPQ0tBUkc6CiAJCWNhc2UgT19UQ1BXSU46CiAJCWNh
c2UgT19UQ1BGTEFHUzoKIAkJY2FzZSBPX1RDUE9QVFM6CkluZGV4OiBzeXMvc3lzL3NvY2tldC5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KUkNTIGZpbGU6IC9ob21lL25jdnMvc3JjL3N5cy9zeXMvc29ja2V0Lmgsdgpy
ZXRyaWV2aW5nIHJldmlzaW9uIDEuMTA1CmRpZmYgLWMgLXUgLXIxLjEwNSBzb2NrZXQuaAotLS0g
c3lzL3N5cy9zb2NrZXQuaAk5IEphbiAyMDEwIDIzOjI0OjQ5IC0wMDAwCTEuMTA1CisrKyBzeXMv
c3lzL3NvY2tldC5oCTI3IFNlcCAyMDEwIDE0OjI1OjU5IC0wMDAwCkBAIC0xMzcsNiArMTM3LDcg
QEAKICNkZWZpbmUJU09fTElTVEVOUUxFTgkweDEwMTIJCS8qIHNvY2tldCdzIGNvbXBsZXRlIHF1
ZXVlIGxlbmd0aCAqLwogI2RlZmluZQlTT19MSVNURU5JTkNRTEVOCTB4MTAxMwkvKiBzb2NrZXQn
cyBpbmNvbXBsZXRlIHF1ZXVlIGxlbmd0aCAqLwogI2RlZmluZQlTT19TRVRGSUIJMHgxMDE0CQkv
KiB1c2UgdGhpcyBGSUIgdG8gcm91dGUgKi8KKyNkZWZpbmUJU09fVVNFUl9DT09LSUUJMHgxMDE1
CQkvKiB1c2UgdGhpcyBwaXBlIHRvIHRocm90dGxlICovCiAjZW5kaWYKIAogLyoKSW5kZXg6IHN5
cy9zeXMvc29ja2V0dmFyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpSQ1MgZmlsZTogL2hvbWUvbmN2cy9zcmMvc3lz
L3N5cy9zb2NrZXR2YXIuaCx2CnJldHJpZXZpbmcgcmV2aXNpb24gMS4xNzQKZGlmZiAtYyAtdSAt
cjEuMTc0IHNvY2tldHZhci5oCi0tLSBzeXMvc3lzL3NvY2tldHZhci5oCTE4IFNlcCAyMDEwIDEx
OjE4OjQyIC0wMDAwCTEuMTc0CisrKyBzeXMvc3lzL3NvY2tldHZhci5oCTI3IFNlcCAyMDEwIDE0
OjI1OjU5IC0wMDAwCkBAIC0xMTgsNiArMTE4LDcgQEAKIAkJY2hhcgkqc29fYWNjZXB0X2ZpbHRl
cl9zdHI7CS8qIHNhdmVkIHVzZXIgYXJncyAqLwogCX0gKnNvX2FjY2Y7CiAJaW50IHNvX2ZpYm51
bTsJCS8qIHJvdXRpbmcgZG9tYWluIGZvciB0aGlzIHNvY2tldCAqLworCXVpbnQzMl90IHNvX3Vz
ZXJfY29va2llOwogfTsKIAogLyoK
--00c09f8a501e74fc4f04913f434e--



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?AANLkTi=GozyQv%2BxuXS7xT6Kzaa7XaFxAOrihKdKdnCge>