Skip site navigation (1)Skip section navigation (2)
Date:      Sun, 31 Jan 1999 05:51:36 -0800 (PST)
From:      Julian Elischer <julian@whistle.com>
To:        net@FreeBSD.ORG
Cc:        Archie Cobbs <archie@whistle.com>
Subject:   Patch to add Netgraph to all ethernet interfaces.
Message-ID:  <Pine.BSF.3.95.990131055031.22411A-200000@current1.whistle.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-512676918-917790696=:22411
Content-Type: TEXT/PLAIN; charset=US-ASCII

Here is a patch that adds a netgraph node capability to any ethernet  
driver.
 (compiles cleanly but I can't test it till tomrrow)
you may attach a hook on either "orphan" or "divert" (but not both)

An example of how one might attach a netgraph 'face' to an existing kernel
facility.

If there is a hook attached to "orphan" then any packets of any
unrecognised protocol will be forwarded to the hook.
If attached to "divert" then ALL packets will be forwarded
 (and not processed normally).  I added the "divert" option for fun (it   
was 3 lines or so)  but you probably don't want it in the final product as
it probably adds about 6 instructions to the path of normal IP packets

Any packets sent to the hook from another netgraph node are transmitted
verbatim
(i.e. they are assumed to have the ethernet header on them)

now if I wrote a node to filter ethernet packets dynamically
using DPF I could add protocols on the fly.

I've been wondering about the following node types..
DPF (dynamic Packet Filter.. super high speed packet sorter)
ipfw clone
link-level packet filter
link-level bridging

julian



--0-512676918-917790696=:22411
Content-Type: TEXT/PLAIN; charset=US-ASCII; name="ether.diff"
Content-Transfer-Encoding: BASE64
Content-ID: <Pine.BSF.3.95.990131055136.22411B@current1.whistle.com>
Content-Description: 

SW5kZXg6IGlmX2FycC5oDQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQpSQ1Mg
ZmlsZTogL2N2cy9mcmVlYnNkL3NyYy9zeXMvbmV0L2lmX2FycC5oLHYNCnJl
dHJpZXZpbmcgcmV2aXNpb24gMS4xMA0KZGlmZiAtYyAtcjEuMTAgaWZfYXJw
LmgNCioqKiBpZl9hcnAuaAkxOTk4LzAxLzEwIDA3OjI5OjEwCTEuMTANCi0t
LSBpZl9hcnAuaAkxOTk5LzAxLzMxIDEzOjI2OjU4DQoqKioqKioqKioqKioq
KioNCioqKiAxMDEsMTA2ICoqKioNCi0tLSAxMDEsMTA5IC0tLS0NCiAgCXN0
cnVjdCAJaWZuZXQgYWNfaWY7CQkvKiBuZXR3b3JrLXZpc2libGUgaW50ZXJm
YWNlICovDQogIAl1X2NoYXIJYWNfZW5hZGRyWzZdOwkJLyogZXRoZXJuZXQg
aGFyZHdhcmUgYWRkcmVzcyAqLw0KICAJaW50CWFjX211bHRpY250OwkJLyog
bGVuZ3RoIG9mIGFjX211bHRpYWRkcnMgbGlzdCAqLw0KKyAjaWZkZWYJTkVU
R1JBUEgNCisgCXZvaWQgKmFjX25nOwkJCS8qIGhvb2sgdG8gaGFuZyBuZXRn
cmFwaCBzdHVmZiBvZmYgKi8NCisgI2VuZGlmDQogIH07DQogIA0KICBleHRl
cm4gdV9jaGFyCWV0aGVyYnJvYWRjYXN0YWRkcls2XTsNCkluZGV4OiBpZl9l
dGhlcnN1YnIuYw0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KUkNTIGZpbGU6
IC9jdnMvZnJlZWJzZC9zcmMvc3lzL25ldC9pZl9ldGhlcnN1YnIuYyx2DQpy
ZXRyaWV2aW5nIHJldmlzaW9uIDEuNTUNCmRpZmYgLWMgLXIxLjU1IGlmX2V0
aGVyc3Vici5jDQoqKiogaWZfZXRoZXJzdWJyLmMJMTk5OS8wMS8zMSAwODox
NzoxNgkxLjU1DQotLS0gaWZfZXRoZXJzdWJyLmMJMTk5OS8wMS8zMSAxMzoy
Njo1OA0KKioqKioqKioqKioqKioqDQoqKiogMzgsNDMgKioqKg0KLS0tIDM4
LDQ0IC0tLS0NCiAgI2luY2x1ZGUgIm9wdF9pbmV0LmgiDQogICNpbmNsdWRl
ICJvcHRfaXB4LmgiDQogICNpbmNsdWRlICJvcHRfYmRnLmgiDQorICNpbmNs
dWRlICJvcHRfbmV0Z3JhcGguaCINCiAgDQogICNpbmNsdWRlIDxzeXMvcGFy
YW0uaD4NCiAgI2luY2x1ZGUgPHN5cy9zeXN0bS5oPg0KKioqKioqKioqKioq
KioqDQoqKiogMTE0LDEyMiAqKioqDQogIHN0YXRpYwlpbnQgZXRoZXJfcmVz
b2x2ZW11bHRpIF9fUCgoc3RydWN0IGlmbmV0ICosIHN0cnVjdCBzb2NrYWRk
ciAqKiwgDQogIAkJCQkgICAgc3RydWN0IHNvY2thZGRyICopKTsNCiAgdV9j
aGFyCWV0aGVyYnJvYWRjYXN0YWRkcls2XSA9IHsgMHhmZiwgMHhmZiwgMHhm
ZiwgMHhmZiwgMHhmZiwgMHhmZiB9Ow0KISAjZGVmaW5lIHNlbmRlcnIoZSkg
ZG8geyBlcnJvciA9IChlKTsgZ290byBiYWQ7fSB3aGlsZSAoMCkNCiAgI2Rl
ZmluZSBJRlAyQUMoSUZQKSAoKHN0cnVjdCBhcnBjb20gKilJRlApDQogIA0K
ICAvKg0KICAgKiBFdGhlcm5ldCBvdXRwdXQgcm91dGluZS4NCiAgICogRW5j
YXBzdWxhdGUgYSBwYWNrZXQgb2YgdHlwZSBmYW1pbHkgZm9yIHRoZSBsb2Nh
bCBuZXQuDQotLS0gMTE1LDE2MCAtLS0tDQogIHN0YXRpYwlpbnQgZXRoZXJf
cmVzb2x2ZW11bHRpIF9fUCgoc3RydWN0IGlmbmV0ICosIHN0cnVjdCBzb2Nr
YWRkciAqKiwgDQogIAkJCQkgICAgc3RydWN0IHNvY2thZGRyICopKTsNCiAg
dV9jaGFyCWV0aGVyYnJvYWRjYXN0YWRkcls2XSA9IHsgMHhmZiwgMHhmZiwg
MHhmZiwgMHhmZiwgMHhmZiwgMHhmZiB9Ow0KISAjZGVmaW5lIHNlbmRlcnIo
ZSkgZG8geyBlcnJvciA9IChlKTsgZ290byBiYWQ7IH0gd2hpbGUgKDApDQog
ICNkZWZpbmUgSUZQMkFDKElGUCkgKChzdHJ1Y3QgYXJwY29tICopSUZQKQ0K
ICANCisgI2lmZGVmIE5FVEdSQVBIDQorICNpbmNsdWRlIDxuZXRncmFwaC9u
Z19ldGhlci5oPg0KKyAjaW5jbHVkZSA8bmV0Z3JhcGgvbmdfbWVzc2FnZS5o
Pg0KKyAjaW5jbHVkZSA8bmV0Z3JhcGgvbmV0Z3JhcGguaD4NCisgDQorIHN0
YXRpYwl2b2lkCW5nZXRoZXJfaW5pdCh2b2lkKiBpZ25vcmVkKTsNCisgc3Rh
dGljIHZvaWQJbmdldGhlcl9zZW5kKHN0cnVjdCBhcnBjb20gKmFjLA0KKyAJ
CQlzdHJ1Y3QgZXRoZXJfaGVhZGVyICplaCwgc3RydWN0IG1idWYgKm0pOw0K
KyBzdGF0aWMJaW50CW5nZXRoZXJfY29uc3RydWN0b3Iobm9kZV9wICpub2Rl
cCk7DQorIHN0YXRpYwlpbnQJbmdldGhlcl9yY3Ztc2cobm9kZV9wIG5vZGUs
IHN0cnVjdCBuZ19tZXNnICptc2csDQorIAkJCWNvbnN0IGNoYXIgKnJldGFk
ZHIsIHN0cnVjdCBuZ19tZXNnICoqcmVzcCk7DQorIHN0YXRpYwlpbnQJbmdl
dGhlcl9ybW5vZGUobm9kZV9wIG5vZGUpOw0KKyBzdGF0aWMJaW50CW5nZXRo
ZXJfbmV3aG9vayhub2RlX3Agbm9kZSwgaG9va19wIGhvb2ssIGNvbnN0IGNo
YXIgKm5hbWUpOw0KKyAvKnN0YXRpYwlob29rX3AJbmdldGhlcl9maW5kaG9v
ayhub2RlX3Agbm9kZSwgY2hhciAqbmFtZSk7Ki8NCisgc3RhdGljCWludAlu
Z2V0aGVyX2Nvbm5lY3QoaG9va19wIGhvb2spOwkvKiBhbHJlYWR5IFBBUlRM
WSBsaW5rZWQgKi8NCisgc3RhdGljCWludAluZ2V0aGVyX3JjdmRhdGEoaG9v
a19wIGhvb2ssIHN0cnVjdCBtYnVmICptLCBtZXRhX3AgbWV0YSk7DQorIHN0
YXRpYwlpbnQJbmdldGhlcl9kaXNjb25uZWN0KGhvb2tfcCBob29rKTsJLyog
bm90aWZ5IG9uIGRpc2Nvbm5lY3QgKi8NCisgDQorIHN0YXRpYyBzdHJ1Y3Qg
bmdfdHlwZSB0eXBlc3RydWN0ID0gew0KKyAJTkdfVkVSU0lPTiwNCisgCU5H
X0VUSEVSX05PREVfVFlQRSwNCisgCU5VTEwsDQorIAluZ2V0aGVyX2NvbnN0
cnVjdG9yLA0KKyAJbmdldGhlcl9yY3Ztc2csDQorIAluZ2V0aGVyX3Jtbm9k
ZSwNCisgCW5nZXRoZXJfbmV3aG9vaywNCisgCU5VTEwsDQorIAluZ2V0aGVy
X2Nvbm5lY3QsDQorIAluZ2V0aGVyX3JjdmRhdGEsDQorIAluZ2V0aGVyX3Jj
dmRhdGEsDQorIAluZ2V0aGVyX2Rpc2Nvbm5lY3QgDQorIH07DQorIA0KKyAj
ZGVmaW5lIEFDMk5HKEFDKSAoKG5vZGVfcCkoKEFDKS0+YWNfbmcpKQ0KKyAj
ZGVmaW5lIE5HRUZfRElWRVJUIE5HRl9UWVBFMQkvKiBhbGwgcGFja2V0cyBz
ZW50IHRvIG5ldGdyYXBoICovDQorICNlbmRpZiAvKiBORVRHUkFQSCAqLw0K
KyANCiAgLyoNCiAgICogRXRoZXJuZXQgb3V0cHV0IHJvdXRpbmUuDQogICAq
IEVuY2Fwc3VsYXRlIGEgcGFja2V0IG9mIHR5cGUgZmFtaWx5IGZvciB0aGUg
bG9jYWwgbmV0Lg0KKioqKioqKioqKioqKioqDQoqKiogNDQ2LDQ1MSAqKioq
DQotLS0gNDg0LDQ5OCAtLS0tDQogIA0KICAJZXRoZXJfdHlwZSA9IG50b2hz
KGVoLT5ldGhlcl90eXBlKTsNCiAgDQorICNpZmRlZglORVRHUkFQSA0KKyAJ
ew0KKyAJCXN0cnVjdCBhcnBjb20gKmFjID0gSUZQMkFDKGlmcCk7DQorIAkJ
aWYgKEFDMk5HKGFjKSAmJiAoQUMyTkcoYWMpLT5mbGFncyAmIE5HRUZfRElW
RVJUKSkNCisgCQkJbmdldGhlcl9zZW5kKGFjLCBlaCwgbSk7DQorIAkJCXJl
dHVybjsNCisgCX0NCisgI2VuZGlmCS8qIE5FVEdSQVBIICovDQorIAkJDQog
ICNpZiBOVkxBTiA+IDANCiAgCWlmIChldGhlcl90eXBlID09IHZsYW5fcHJv
dG8pIHsNCiAgCQlpZiAodmxhbl9pbnB1dChlaCwgbSkgPCAwKQ0KKioqKioq
KioqKioqKioqDQoqKiogNjMwLDYzNiAqKioqDQotLS0gNjc3LDY4NyAtLS0t
DQogICNlbmRpZiAvKiBMTEMgKi8NCiAgCQlkcm9wYW55d2F5Og0KICAJCWRl
ZmF1bHQ6DQorICNpZmRlZglORVRHUkFQSA0KKyAJCQluZ2V0aGVyX3NlbmQo
YWMsIGVoLCBtKTsNCisgI2Vsc2UJLyogTkVUR1JBUEggKi8NCiAgCQkJbV9m
cmVlbShtKTsNCisgI2VuZGlmCS8qIE5FVEdSQVBIICovDQogIAkJCXJldHVy
bjsNCiAgCQl9DQogICNlbHNlIC8qIElTTyB8fCBMTEMgfHwgTkVUQVRBTEsg
Ki8NCioqKioqKioqKioqKioqKg0KKioqIDgzMyw4MzUgKioqKg0KLS0tIDg4
NCwxMTc5IC0tLS0NCiAgCQlyZXR1cm4gRUFGTk9TVVBQT1JUOw0KICAJfQ0K
ICB9DQorIA0KKyAjaWZkZWYJTkVUR1JBUEgNCisgDQorIC8qKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKg0KKyAgKiBUaGlzIHNlY3Rpb24gY29udGFpbnMg
dGhlIG1ldGhvZHMgZm9yIHRoZSBOZXRncmFwaCBpbnRlcmZhY2UNCisgICoq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqLw0KKyAvKiBJdCdzIEFzY2lpLWFy
dCB0aW1lIQ0KKyAgKiBUaGUgaWZuZXQgaXMgdGhlIGZpcnN0IHBhcnQgb2Yg
dGhlIGFycGNvbSB3aGljaCBtdXN0IGJlDQorICAqIHRoZSBmaXJzdCBwYXJ0
IG9mIHRoZSBkZXZpY2UncyBzb2Z0Yy4uIHl1ay4NCisgICoNCisgICogICAg
ICArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0rLS0tLS0tLS0t
Kw0KKyAgKiAgICAgIHwgICBzdHJ1Y3QgaWZuZXQgKCppZnApICAgIHwgICAg
IHwgICAgICAgICB8DQorICAqICAgICAgfCAgICAgICAgICAgICAgICAgICAg
ICAgICAgfCAgICAgfCAgICAgICAgIHwNCisgICogICAgICArLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0rICAgICB8ICAgICAgICAgfA0KKyAgKiAgICst
LXxbYWNfbmddICAgICBzdHJ1Y3QgYXJwY29tICgqYWMpIHwgICAgICAgICB8
DQorICAqICAgfCAgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
KyAgICAgICAgIHwNCisgICogICB8ICB8ICAgc3RydWN0IHNvZnRjICgqaWZw
LT5pZl9zb2Z0YykgKGRldmljZSkgfA0KKyAgKiAgIHwgICstLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rDQorICAqICAgfCAg
ICAgICAgICAgICAgIF4NCisgICogQUMyTkcoKSAgICAgICAgICAgfA0KKyAg
KiAgIHwgICAgICAgICAgICAgICB8DQorICAqICAgfCAgICAgICArLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLSsNCisgICogICB8ICAgICAgIHwgICBbcHJpdmF0
ZV0gW2ZsYWdzXSAgfA0KKyAgKiAgICstLS0tLS0+fCBzdHJ1Y3Qgbmdfbm9k
ZSAgICAgICB8DQorICAqICAgICAgICAgICB8W2hvb2tzXSAgICAgICAgICAg
ICAgIHwgKiogd2Ugb25seSBhbGxvdyBvbmUgaG9vaw0KKyAgKiAgICAgICAg
ICAgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rDQorICAqICAgICAgICAgICAg
ICAgfCAgIF4NCisgICogICAgICAgICAgICAgICB8ICAgfA0KKyAgKiAgICAg
ICAgICAgICAgIHYgICB8DQorICAqICAgICAgICAgICAgICstLS0tLS0tLS0t
LS0tKw0KKyAgKiAgICAgICAgICAgICB8ICAgIFtub2RlXSAgIHwNCisgICog
ICAgICAgICAgICAgfCAgICBob29rICAgICB8DQorICAqICAgICAgICAgICAg
IHwgICAgW3ByaXZhdGVdfC0tICp1bnVzZWQqDQorICAqICAgICAgICAgICAg
ICstLS0tLS0tLS0tLS0tKw0KKyAgKi8NCisgDQorIC8qDQorICAqIGNhbGxl
ZCBkdXJpbmcgaW50ZXJmYWNlIGF0dGFjaGluZw0KKyAgKi8NCisgc3RhdGlj
IHZvaWQNCisgbmdldGhlcl9pbml0KHZvaWQgKmlmcHZvaWQpDQorIHsNCisg
CXN0cnVjdAlpZm5ldCAqaWZwID0gaWZwdm9pZDsNCisgCXN0cnVjdCBhcnBj
b20gKmFjID0gSUZQMkFDKGlmcCk7DQorIAlzdGF0aWMgaW50CW5nZXRoZXJf
ZG9uZV9pbml0Ow0KKyAJY2hhcgluYW1lYnVmWzMyXTsNCisgCW5vZGVfcCBu
b2RlOw0KKyANCisgCS8qDQorIAkgKiB3ZSBoYXZlIGZvdW5kIGEgbm9kZSwg
bWFrZSBzdXJlIG91ciAndHlwZScgaXMgYXZhaWxhYmUuDQorIAkgKi8NCisg
CWlmIChuZ2V0aGVyX2RvbmVfaW5pdCA9PSAwKSB7DQorIAkJaWYgKG5nX25l
d3R5cGUoJnR5cGVzdHJ1Y3QpKSB7DQorIAkJCXByaW50ZigibmdldGhlciBp
bnN0YWxsIGZhaWxlZFxuIik7DQorIAkJCXJldHVybjsNCisgCQl9DQorIAkJ
bmdldGhlcl9kb25lX2luaXQgPSAxOw0KKyAJfQ0KKyAJaWYgKG5nX21ha2Vf
bm9kZV9jb21tb24oJnR5cGVzdHJ1Y3QsICZub2RlKSAhPSAwKQ0KKyAJCXJl
dHVybjsNCisgCWFjLT5hY19uZyA9IG5vZGU7DQorIAlub2RlLT5wcml2YXRl
ID0gaWZwOw0KKyAJc3ByaW50ZihuYW1lYnVmLCAiJXMlZCIsIGlmcC0+aWZf
bmFtZSwgaWZwLT5pZl91bml0KTsNCisgCW5nX25hbWVfbm9kZShBQzJORyhh
YyksIG5hbWVidWYpOw0KKyB9DQorIA0KKyAvKg0KKyAgKiBJdCBpcyBub3Qg
cG9zc2libGUgb3IgYWxsb3dhYmxlIHRvIGNyZWF0ZSBhIG5vZGUgb2YgdGhp
cyB0eXBlLg0KKyAgKiBJZiB0aGUgaGFyZHdhcmUgZXhpc3RzLCBpdCB3aWxs
IGFscmVhZHkgaGF2ZSBjcmVhdGVkIGl0Lg0KKyAgKi8NCisgc3RhdGljCWlu
dA0KKyBuZ2V0aGVyX2NvbnN0cnVjdG9yKG5vZGVfcCAqbm9kZXApDQorIHsN
CisgCXJldHVybiAoRUlOVkFMKTsNCisgfQ0KKyANCisgLyoNCisgICogR2l2
ZSBvdXIgb2sgZm9yIGEgaG9vayB0byBiZSBhZGRlZC4uLg0KKyAgKiANCisg
ICogQWxsb3cgb25lIGhvb2sgYXQgYSB0aW1lIChyYXdkYXRhKS4gDQorICAq
IEl0IGNhbiBlaXRlaCByZGl2ZXJ0IGV2ZXJ5dGhpbmcgb3Igb25seSB1bmNs
YWltZWQgcGFja2V0cy4NCisgICovDQorIHN0YXRpYwlpbnQNCisgbmdldGhl
cl9uZXdob29rKG5vZGVfcCBub2RlLCBob29rX3AgaG9vaywgY29uc3QgY2hh
ciAqbmFtZSkNCisgew0KKyANCisgCS8qIGNoZWNrIGlmIHRoZXJlIGlzIGFs
cmVhZHkgYSBob29rICovDQorIAlpZiAoTElTVF9GSVJTVCgmKG5vZGUtPmhv
b2tzKSkpDQorIAkJcmV0dXJuKEVJU0NPTk4pOw0KKyAJLyoNCisgCSAqIENo
ZWNrIGZvciB3aGljaCBtb2RlIGhvb2sgd2Ugd2FudC4NCisgCSAqLw0KKyAJ
aWYgKHN0cmNtcChuYW1lLCBOR19FVEhFUl9IT09LX09SUEhBTikgIT0gMCkg
ew0KKyAJCWlmIChzdHJjbXAobmFtZSwgTkdfRVRIRVJfSE9PS19ESVZFUlQp
ICE9IDApIHsNCisgCQkJcmV0dXJuIChFSU5WQUwpOw0KKyAJCX0NCisgCQlu
b2RlLT5mbGFncyB8PSBOR0VGX0RJVkVSVDsNCisgCX0gZWxzZSB7DQorIAkJ
bm9kZS0+ZmxhZ3MgJj0gfk5HRUZfRElWRVJUOw0KKyAJfQ0KKyAJcmV0dXJu
ICgwKTsNCisgfQ0KKyANCisgLyoNCisgICogaW5jb21pbmcgbWVzc2FnZXMu
DQorICAqIEp1c3QgcmVzcG9uZCB0byB0aGUgZ2VuZXJpYyBURVhUX1NUQVRV
UyBtZXNzYWdlDQorICAqLw0KKyBzdGF0aWMJaW50DQorIG5nZXRoZXJfcmN2
bXNnKG5vZGVfcCBub2RlLA0KKyAJc3RydWN0IG5nX21lc2cgKm1zZywgY29u
c3QgY2hhciAqcmV0YWRkciwgc3RydWN0IG5nX21lc2cgKipyZXNwKQ0KKyB7
DQorIAlzdHJ1Y3QgaWZuZXQJKmlmcDsNCisgCWludCBlcnJvciA9IDA7DQor
IA0KKyAJaWZwID0gbm9kZS0+cHJpdmF0ZTsNCisgCXN3aXRjaCAobXNnLT5o
ZWFkZXIudHlwZWNvb2tpZSkgew0KKyAJICAgIGNhc2UJTkdNX0VUSEVSX0NP
T0tJRTogDQorIAkJZXJyb3IgPSBFSU5WQUw7DQorIAkJYnJlYWs7DQorIAkg
ICAgY2FzZQlOR01fR0VORVJJQ19DT09LSUU6IA0KKyAJCXN3aXRjaChtc2ct
PmhlYWRlci5jbWQpIHsNCisgCQkgICAgY2FzZSBOR01fVEVYVF9TVEFUVVM6
IHsNCisgCQkJICAgIGNoYXIJKmFyZzsNCisgCQkJICAgIGludCBwb3MgPSAw
Ow0KKyAJCQkgICAgaW50IHJlc3BsZW4gPSBzaXplb2Yoc3RydWN0IG5nX21l
c2cpICsgNTEyOw0KKyAJCQkgICAgTUFMTE9DKCpyZXNwLCBzdHJ1Y3Qgbmdf
bWVzZyAqLCByZXNwbGVuLA0KKyAJCQkJCU1fTkVUR1JBUEgsIE1fTk9XQUlU
KTsNCisgCQkJICAgIGlmICgqcmVzcCA9PSBOVUxMKSB7IA0KKyAJCQkJZXJy
b3IgPSBFTk9NRU07DQorIAkJCQlicmVhazsNCisgCQkJICAgIH0gICAgICAg
DQorIAkJCSAgICBiemVybygqcmVzcCwgcmVzcGxlbik7DQorIAkJCSAgICBh
cmcgPSAoKnJlc3ApLT5kYXRhOw0KKyANCisgCQkJICAgIC8qDQorIAkJCSAg
ICAgKiBQdXQgaW4gdGhlIHRocm91Z2hwdXQgaW5mb3JtYXRpb24uDQorIAkJ
CSAgICAgKi8NCisgCQkJICAgIHBvcyA9IHNwcmludGYoYXJnLCAiJWxkIGJ5
dGVzIGluLCAlbGQgYnl0ZXMgb3V0XG4iLA0KKyAJCQkgICAgaWZwLT5pZl9p
Ynl0ZXMsIGlmcC0+aWZfb2J5dGVzKTsNCisgCQkJICAgIHBvcyArPSBzcHJp
bnRmKGFyZyArIHBvcywNCisgCQkJCSIlbGQgb3V0cHV0IGVycm9yc1xuIiwN
CisgCQkJICAgIAlpZnAtPmlmX29lcnJvcnMpOw0KKyAJCQkgICAgcG9zICs9
IHNwcmludGYoYXJnICsgcG9zLA0KKyAJCQkJImllcnJvcnMgPSAlbGRcbiIs
DQorIAkJCSAgICAJaWZwLT5pZl9pZXJyb3JzKTsNCisgDQorIAkJCSAgICAo
KnJlc3ApLT5oZWFkZXIudmVyc2lvbiA9IE5HX1ZFUlNJT047DQorIAkJCSAg
ICAoKnJlc3ApLT5oZWFkZXIuYXJnbGVuID0gc3RybGVuKGFyZykgKyAxOw0K
KyAJCQkgICAgKCpyZXNwKS0+aGVhZGVyLnRva2VuID0gbXNnLT5oZWFkZXIu
dG9rZW47DQorIAkJCSAgICAoKnJlc3ApLT5oZWFkZXIudHlwZWNvb2tpZSA9
IE5HTV9FVEhFUl9DT09LSUU7DQorIAkJCSAgICAoKnJlc3ApLT5oZWFkZXIu
Y21kID0gbXNnLT5oZWFkZXIuY21kOw0KKyAJCQkgICAgc3RybmNweSgoKnJl
c3ApLT5oZWFkZXIuY21kc3RyLCAic3RhdHVzIiwNCisgCQkJCQlOR19DTURT
VFJMRU4pOw0KKyAJCQl9DQorIAkJCWJyZWFrOw0KKyAJICAgIAkgICAgZGVm
YXVsdDoNCisgCQkgCWVycm9yID0gRUlOVkFMOw0KKyAJCSAJYnJlYWs7DQor
IAkJICAgIH0NCisgCQlicmVhazsNCisgCSAgICBkZWZhdWx0Og0KKyAJCWVy
cm9yID0gRUlOVkFMOw0KKyAJCWJyZWFrOw0KKyAJfQ0KKyAJZnJlZShtc2cs
IE1fTkVUR1JBUEgpOw0KKyAJcmV0dXJuIChlcnJvcik7DQorIH0NCisgDQor
IC8qDQorICAqIFJlY2VpdmUgYSBjb21wbGV0ZWQgZXRoZXJuZXQgcGFja2V0
Lg0KKyAgKiBRdWV1ZSBpdCBmb3Igb3V0cHV0Lg0KKyAgKi8NCisgc3RhdGlj
CWludA0KKyBuZ2V0aGVyX3JjdmRhdGEoaG9va19wIGhvb2ssIHN0cnVjdCBt
YnVmICptLCBtZXRhX3AgbWV0YSkNCisgew0KKyAJc3RydWN0IGlmbmV0ICpp
ZnA7DQorIAlpbnQJZXJyb3IgPSAwOw0KKyAJaW50CXM7DQorIAlzdHJ1Y3Qg
ZXRoZXJfaGVhZGVyICplaDsNCisgCQ0KKyAJaWZwID0gaG9vay0+bm9kZS0+
cHJpdmF0ZTsNCisgDQorIAlpZiAoKGlmcC0+aWZfZmxhZ3MgJiAoSUZGX1VQ
fElGRl9SVU5OSU5HKSkgIT0gKElGRl9VUHxJRkZfUlVOTklORykpDQorIAkJ
c2VuZGVycihFTkVURE9XTik7DQorIAkvKg0KKyAJICogSWYgYSBzaW1wbGV4
IGludGVyZmFjZSwgYW5kIHRoZSBwYWNrZXQgaXMgYmVpbmcgc2VudCB0byBv
dXINCisgCSAqIEV0aGVybmV0IGFkZHJlc3Mgb3IgYSBicm9hZGNhc3QgYWRk
cmVzcywgbG9vcGJhY2sgYSBjb3B5Lg0KKyAJICogWFhYIFRvIG1ha2UgYSBz
aW1wbGV4IGRldmljZSBiZWhhdmUgZXhhY3RseSBsaWtlIGEgZHVwbGV4DQor
IAkgKiBkZXZpY2UsIHdlIHNob3VsZCBjb3B5IGluIHRoZSBjYXNlIG9mIHNl
bmRpbmcgdG8gb3VyIG93bg0KKyAJICogZXRoZXJuZXQgYWRkcmVzcyAodGh1
cyBsZXR0aW5nIHRoZSBvcmlnaW5hbCBhY3R1YWxseSBhcHBlYXINCisgCSAq
IG9uIHRoZSB3aXJlKS4gSG93ZXZlciwgd2UgZG9uJ3QgZG8gdGhhdCBoZXJl
IGZvciBzZWN1cml0eQ0KKyAJICogcmVhc29ucyBhbmQgY29tcGF0aWJpbGl0
eSB3aXRoIHRoZSBvcmlnaW5hbCBiZWhhdmlvci4NCisgCSAqLw0KKyAJaWYg
KGlmcC0+aWZfZmxhZ3MgJiBJRkZfU0lNUExFWCkgew0KKyAJCWVoID0gbXRv
ZChtLCBzdHJ1Y3QgZXRoZXJfaGVhZGVyICopOw0KKyAJCWlmIChtLT5tX2Zs
YWdzICYgTV9CQ0FTVCkgew0KKyAJCQlzdHJ1Y3QgbWJ1ZiAqbiA9IG1fY29w
eShtLCAwLCAoaW50KU1fQ09QWUFMTCk7DQorIA0KKyAJCQluZ19xdWV1ZV9k
YXRhKGhvb2ssIG4sIG1ldGEpOw0KKyAJCX0gZWxzZSBpZiAoYmNtcChlaC0+
ZXRoZXJfZGhvc3QsDQorIAkJICAgIGVoLT5ldGhlcl9zaG9zdCwgRVRIRVJf
QUREUl9MRU4pID09IDApIHsNCisgCQkJbmdfcXVldWVfZGF0YShob29rLCBt
LCBtZXRhKTsNCisgCQkJcmV0dXJuICgwKTsJLyogWFhYICovDQorIAkJfQ0K
KyAJfQ0KKyAJcyA9IHNwbGltcCgpOw0KKyAJLyoNCisgCSAqIFF1ZXVlIG1l
c3NhZ2Ugb24gaW50ZXJmYWNlLCBhbmQgc3RhcnQgb3V0cHV0IGlmIGludGVy
ZmFjZQ0KKyAJICogbm90IHlldCBhY3RpdmUuDQorIAkgKiBYWFggaWYgd2Ug
bG9va2VhZCBhdCB0aGUgcHJpb3JpdHkgaW4gdGhlIG1ldGEgZGF0YSB3ZSBj
b3VsZA0KKyAJICogcXVldWUgaGlnaCBwcmlvcml0eSBpdGVtcyBhdCB0aGUg
aGVhZC4NCisgCSAqLw0KKyAJaWYgKElGX1FGVUxMKCZpZnAtPmlmX3NuZCkp
IHsNCisgCQlJRl9EUk9QKCZpZnAtPmlmX3NuZCk7DQorIAkJc3BseChzKTsN
CisgCQlzZW5kZXJyKEVOT0JVRlMpOw0KKyAJfQ0KKyAJSUZfRU5RVUVVRSgm
aWZwLT5pZl9zbmQsIG0pOw0KKyAJaWYgKChpZnAtPmlmX2ZsYWdzICYgSUZG
X09BQ1RJVkUpID09IDApDQorIAkJKCppZnAtPmlmX3N0YXJ0KShpZnApOw0K
KyAJc3BseChzKTsNCisgCWlmcC0+aWZfb2J5dGVzICs9IG0tPm1fcGt0aGRy
LmxlbjsNCisgCWlmIChtLT5tX2ZsYWdzICYgTV9NQ0FTVCkNCisgCQlpZnAt
PmlmX29tY2FzdHMrKzsNCisgCXJldHVybiAoZXJyb3IpOw0KKyANCisgYmFk
Og0KKyAJTkdfRlJFRV9EQVRBKG0sIG1ldGEpOw0KKyAJcmV0dXJuIChlcnJv
cik7DQorIH0NCisgDQorIC8qDQorICAqIHBhc3MgYW4gbWJ1ZiBvdXQgdG8g
dGhlIGNvbm5lY3RlZCBob29rDQorICAqLw0KKyBzdGF0aWMgdm9pZA0KKyBu
Z2V0aGVyX3NlbmQoc3RydWN0IGFycGNvbSAqYWMsIHN0cnVjdCBldGhlcl9o
ZWFkZXIgKmVoLCBzdHJ1Y3QgbWJ1ZiAqbSkNCisgew0KKyAJbm9kZV9wIG5v
ZGUgPSBBQzJORyhhYyk7DQorIAlzdHJ1Y3QgZXRoZXJfaGVhZGVyICplaDI7
DQorIA0KKyAJaWYgKG5vZGUgJiYgTElTVF9GSVJTVCgmKG5vZGUtPmhvb2tz
KSkpIHsNCisgCQlNX1BSRVBFTkQobSwgc2l6ZW9mKCplaCksIE1fRE9OVFdB
SVQpOw0KKyAJCWlmIChtID09IDApDQorIAkJCXJldHVybjsNCisgCQllaDIg
PSBtdG9kKG0sIHN0cnVjdCBldGhlcl9oZWFkZXIgKik7DQorIAkJLyoNCisg
CQkgKiBQb3NzaWJseSAnZWgnIGFscmVhZHkgcG9pbnRzDQorIAkJICogdG8g
dGhlIHJpZ2h0IHBsYWNlLg0KKyAJCSAqLw0KKyAJCWlmIChlaDIgIT0gZWgp
DQorIAkgCQliY29weShlaCwgZWgyLCBzaXplb2YoKmVoKSk7DQorIAkJbmdf
cXVldWVfZGF0YShMSVNUX0ZJUlNUKCYobm9kZS0+aG9va3MpKSwgbSwgTlVM
TCk7DQorIAl9IGVsc2Ugew0KKyAJCW1fZnJlZW0obSk7DQorIAl9DQorIH0N
CisgLyoNCisgICogZG8gbG9jYWwgc2h1dGRvd24gcHJvY2Vzc2luZy4uDQor
ICAqIFRoaXMgbm9kZSB3aWxsIHJlZnVzZSB0byBnbyBhd2F5LCB1bmxlc3Mg
dGhlIGhhcmR3YXJlIHNheXMgdG8uLg0KKyAgKiBkb24ndCB1bnJlZiB0aGUg
bm9kZSwgb3IgcmVtb3ZlIG91ciBuYW1lLiBqdXN0IGNsZWFyIG91ciBsaW5r
cyB1cC4NCisgICovDQorIHN0YXRpYwlpbnQNCisgbmdldGhlcl9ybW5vZGUo
bm9kZV9wIG5vZGUpDQorIHsNCisgCW5nX2N1dGxpbmtzKG5vZGUpOw0KKyAJ
bm9kZS0+ZmxhZ3MgJj0gfk5HX0lOVkFMSUQ7IC8qIGJvdW5jZSBiYWNrIHRv
IGxpZmUgKi8NCisgCXJldHVybiAoMCk7DQorIH0NCisgDQorIC8qIGFscmVh
ZHkgbGlua2VkICovDQorIHN0YXRpYwlpbnQNCisgbmdldGhlcl9jb25uZWN0
KGhvb2tfcCBob29rKQ0KKyB7DQorIAkvKiBiZSByZWFsbHkgYW1pYWJsZSBh
bmQganVzdCBzYXkgIllVUCB0aGF0J3MgT0sgYnkgbWUhICIgKi8NCisgCXJl
dHVybiAoMCk7DQorIH0NCisgDQorIC8qDQorICAqIG5vdGlmeSBvbiBob29r
IGRpc2Nvbm5lY3Rpb24gKGRlc3RydWN0aW9uKQ0KKyAgKg0KKyAgKiBGb3Ig
dGhpcyB0eXBlLCByZW1vdmFsIG9mIHRoZSBsYXN0IGxpbnMgbm8gZWZmZWN0
LiBUaGUgaW50ZXJmYWNlIGNhbiBydW4gDQorICAqIGluZGVwZW5kZW50bHku
DQorICAqIFNpbmNlIHdlIGhhdmUgbm8gcGVyLWhvb2sgaW5mb3JtYXRpb24s
IHRoaXMgaXMgcmF0aGVyIHNpbXBsZS4NCisgICovDQorIHN0YXRpYwlpbnQN
CisgbmdldGhlcl9kaXNjb25uZWN0KGhvb2tfcCBob29rKQ0KKyB7DQorIAlo
b29rLT5ub2RlLT5mbGFncyAmPSB+TkdFRl9ESVZFUlQ7DQorIAlyZXR1cm4g
KDApOw0KKyB9DQorICNlbmRpZiAvKiBORVRHUkFQSCAqLw0KKyANCisgLyoq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogRU5EICoqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKiovDQo=
--0-512676918-917790696=:22411--

To Unsubscribe: send mail to majordomo@FreeBSD.org
with "unsubscribe freebsd-net" 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.95.990131055031.22411A-200000>