From owner-freebsd-net@FreeBSD.ORG Mon Sep 27 15:48:31 2010 Return-Path: Delivered-To: freebsd-net@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 9E3FC106566B for ; Mon, 27 Sep 2010 15:48:31 +0000 (UTC) (envelope-from apauljoe@gmail.com) Received: from mail-qw0-f54.google.com (mail-qw0-f54.google.com [209.85.216.54]) by mx1.freebsd.org (Postfix) with ESMTP id 5713A8FC1C for ; Mon, 27 Sep 2010 15:48:31 +0000 (UTC) Received: by qwd6 with SMTP id 6so3419686qwd.13 for ; Mon, 27 Sep 2010 08:48:30 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=gamma; h=domainkey-signature:mime-version:received:received:date:message-id :subject:from:to:cc:content-type; bh=mY053jZG+Qa4ZJVgNyT53fQtrbINSXmM8E9UUB8wRkM=; b=W05qPtsp3FBUX/rziTFO/H3WvnBfrzYPqhn3viiKBI/y1ljlV9CAdKOryWqg9w7bYH l9EOxK81nHnPFFlHM2G/usqonILNIp5Iw433b+GWxMKCpKPGK49Y1RW/wc+QmSf+cmPW cGMHdIa2FlZj2iMOsHsNncdGGyTuv2f8E7HSE= DomainKey-Signature: a=rsa-sha1; c=nofws; d=gmail.com; s=gamma; h=mime-version:date:message-id:subject:from:to:cc:content-type; b=VMaQwLkFTloqG3voFZqXMfbwAgijAgrWMChY8w+IycfOFkIG1v6KSSDJJZ4I2S5sAB rMQhbyztsPXil3ItCA1qe4nHyaLHkg9vjLVvlMxyVhVIjFz+LiXmvbwqQfpbLT0fGkiA 5vECo18r3PhiX76IAkxd/tjeK/WC3l2U1Xxfw= MIME-Version: 1.0 Received: by 10.224.71.209 with SMTP id i17mr5683354qaj.282.1285600807549; Mon, 27 Sep 2010 08:20:07 -0700 (PDT) Received: by 10.229.26.8 with HTTP; Mon, 27 Sep 2010 08:20:07 -0700 (PDT) Date: Mon, 27 Sep 2010 20:50:07 +0530 Message-ID: From: Paul Joe To: freebsd-net@freebsd.org Content-Type: multipart/mixed; boundary=00c09f8a501e74fc4f04913f434e X-Content-Filtered-By: Mailman/MimeDel 2.1.5 Cc: Luigi Rizzo Subject: Extending dummynet/ipfw X-BeenThere: freebsd-net@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: Networking and TCP/IP with FreeBSD List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 27 Sep 2010 15:48:31 -0000 --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--