[LARTC] [ANNOUNCE] sch_dup - duplicate packet queue discipline [2.6]

Catalin BOIE util@deuroconsult.ro
Mon, 29 Mar 2004 16:45:12 +0300 (EEST)


  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.

---1646943047-193734462-1080567496=:13656
Content-Type: TEXT/PLAIN; CHARSET=US-ASCII
Content-ID: <Pine.LNX.4.58.0403291639081.15854@hosting.rdsbv.ro>

Hello!

This is my first work for kernel, so please have mercy. :)

OK, I like to announce sch_dup, a new queue discipline that, attached to a
class (or a device, as root) duplicate packets that pass. Yes, you can
control the frequency of duplicates.

Example:
tc qdisc add dev eth0 root dup limit 100 gap 1
This means: create a pfifo queue and send packets with
a gap of 1 (0 = no dups) between duplicates:
gap=0: no duplication
gap=1: NDNDNDNDND
gap=2: NNDNNDNNDNNDNND
(N=not duplicated, D duplicated)

Attached are 3 patches: 1 patch for net/sched dir, other
for include/linux/pkg_sched.h, and the last for iproute2.

Any comments are appreciated.

David, please include it in 2.6.
Alexey, please include the third patch in iproute2.

Thank you!
---
Catalin(ux aka Dino) BOIE
catab at deuroconsult.ro
---1646943047-193734462-1080567496=:13656
Content-Type: TEXT/PLAIN; CHARSET=US-ASCII; NAME=sch_dup_p1
Content-Transfer-Encoding: BASE64
Content-ID: <Pine.LNX.4.58.0403291638160.13656@hosting.rdsbv.ro>
Content-Description: 
Content-Disposition: ATTACHMENT; FILENAME=sch_dup_p1

ZGlmZiAteCAnKi5tb2QuYycgLXggJyouY21kJyAteCAnKi5vJyAteCAnKi5r
bycgLS1uZXctZmlsZSAtdXByIGxpbnV4LTIuNi41LXJjMi1vcmlnL25ldC9z
Y2hlZC9LY29uZmlnIGxpbnV4LTIuNi41LXJjMi9uZXQvc2NoZWQvS2NvbmZp
Zw0KLS0tIGxpbnV4LTIuNi41LXJjMi1vcmlnL25ldC9zY2hlZC9LY29uZmln
CTIwMDQtMDMtMjIgMTA6MTY6MjguMDAwMDAwMDAwICswMjAwDQorKysgbGlu
dXgtMi42LjUtcmMyL25ldC9zY2hlZC9LY29uZmlnCTIwMDQtMDMtMjkgMTI6
MDg6MjguMDAwMDAwMDAwICswMzAwDQpAQCAtMTc1LDYgKzE3NSwxNiBAQCBj
b25maWcgTkVUX1NDSF9ERUxBWQ0KIAkgIFRvIGNvbXBpbGUgdGhpcyBkcml2
ZXIgYXMgYSBtb2R1bGUsIGNob29zZSBNIGhlcmU6IHRoZSBtb2R1bGUNCiAJ
ICB3aWxsIGJlIGNhbGxlZCBzY2hfZGVsYXkuDQogDQorY29uZmlnIE5FVF9T
Q0hfRFVQDQorCXRyaXN0YXRlICJEdXBsaWNhdGUgc2ltdWxhdG9yIg0KKwlk
ZXBlbmRzIG9uIE5FVF9TQ0hFRA0KKwloZWxwDQorCSAgU2F5IFkgaWYgeW91
IHdhbnQgdG8gc2ltdWxhdGUgZHVwbGljYXRlIHBhY2tldHMuDQorCSAgVGhp
cyBpcyBpbnRlbmRlZCBtYWlubHkgZm9yIHRlc3RpbmcuDQorDQorCSAgVG8g
Y29tcGlsZSB0aGlzIGRyaXZlciBhcyBhIG1vZHVsZSwgY2hvb3NlIE0gaGVy
ZTogdGhlIG1vZHVsZQ0KKwkgIHdpbGwgYmUgY2FsbGVkIHNjaF9kdXAuDQor
DQogY29uZmlnIE5FVF9TQ0hfSU5HUkVTUw0KIAl0cmlzdGF0ZSAiSW5ncmVz
cyBRZGlzYyINCiAJZGVwZW5kcyBvbiBORVRfU0NIRUQgJiYgTkVURklMVEVS
DQpkaWZmIC14ICcqLm1vZC5jJyAteCAnKi5jbWQnIC14ICcqLm8nIC14ICcq
LmtvJyAtLW5ldy1maWxlIC11cHIgbGludXgtMi42LjUtcmMyLW9yaWcvbmV0
L3NjaGVkL01ha2VmaWxlIGxpbnV4LTIuNi41LXJjMi9uZXQvc2NoZWQvTWFr
ZWZpbGUNCi0tLSBsaW51eC0yLjYuNS1yYzItb3JpZy9uZXQvc2NoZWQvTWFr
ZWZpbGUJMjAwNC0wMy0yMiAxMDoxNjoyOC4wMDAwMDAwMDAgKzAyMDANCisr
KyBsaW51eC0yLjYuNS1yYzIvbmV0L3NjaGVkL01ha2VmaWxlCTIwMDQtMDMt
MjkgMTI6MDg6NDAuMDAwMDAwMDAwICswMzAwDQpAQCAtMjMsNiArMjMsNyBA
QCBvYmotJChDT05GSUdfTkVUX1NDSF9URVFMKQkrPSBzY2hfdGVxbC5vDQog
b2JqLSQoQ09ORklHX05FVF9TQ0hfUFJJTykJKz0gc2NoX3ByaW8ubw0KIG9i
ai0kKENPTkZJR19ORVRfU0NIX0FUTSkJKz0gc2NoX2F0bS5vDQogb2JqLSQo
Q09ORklHX05FVF9TQ0hfREVMQVkpCSs9IHNjaF9kZWxheS5vDQorb2JqLSQo
Q09ORklHX05FVF9TQ0hfREVMQVkpCSs9IHNjaF9kdXAubw0KIG9iai0kKENP
TkZJR19ORVRfQ0xTX1UzMikJKz0gY2xzX3UzMi5vDQogb2JqLSQoQ09ORklH
X05FVF9DTFNfUk9VVEU0KQkrPSBjbHNfcm91dGUubw0KIG9iai0kKENPTkZJ
R19ORVRfQ0xTX0ZXKQkrPSBjbHNfZncubw0KZGlmZiAteCAnKi5tb2QuYycg
LXggJyouY21kJyAteCAnKi5vJyAteCAnKi5rbycgLS1uZXctZmlsZSAtdXBy
IGxpbnV4LTIuNi41LXJjMi1vcmlnL25ldC9zY2hlZC9zY2hfZHVwLmMgbGlu
dXgtMi42LjUtcmMyL25ldC9zY2hlZC9zY2hfZHVwLmMNCi0tLSBsaW51eC0y
LjYuNS1yYzItb3JpZy9uZXQvc2NoZWQvc2NoX2R1cC5jCTE5NzAtMDEtMDEg
MDI6MDA6MDAuMDAwMDAwMDAwICswMjAwDQorKysgbGludXgtMi42LjUtcmMy
L25ldC9zY2hlZC9zY2hfZHVwLmMJMjAwNC0wMy0yOSAxMjo1OTo0Mi4wMDAw
MDAwMDAgKzAzMDANCkBAIC0wLDAgKzEsMjI4IEBADQorLyoNCisgKiBuZXQv
c2NoZWQvc2NoX2R1cC5jCUR1cGxpY2F0ZSBwYWNrZXQgc2NoZWR1bGVyIHJv
dXRpbmVzLg0KKyAqDQorICoJCVRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3
YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3INCisgKgkJbW9k
aWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVi
bGljIExpY2Vuc2UNCisgKgkJYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNv
ZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uDQorICoJCTIgb2Yg
dGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZl
cnNpb24uDQorICoNCisgKiBBdXRob3JzOglDYXRhbGluKHV4IGFrYSBEaW5v
KSBCT0lFLCA8Y2F0YWIgYXQgZGV1cm9jb25zdWx0LnJvPg0KKyAqLw0KKw0K
KyNpbmNsdWRlIDxsaW51eC9jb25maWcuaD4NCisjaW5jbHVkZSA8bGludXgv
aW5pdC5oPg0KKyNpbmNsdWRlIDxsaW51eC9rZXJuZWwuaD4NCisjaW5jbHVk
ZSA8bGludXgvbW9kdWxlLmg+DQorI2luY2x1ZGUgPGxpbnV4L3NjaGVkLmg+
DQorI2luY2x1ZGUgPGxpbnV4L3NtcF9sb2NrLmg+DQorI2luY2x1ZGUgPGxp
bnV4L2NhcGFiaWxpdHkuaD4NCisjaW5jbHVkZSA8bGludXgvaW4uaD4NCisj
aW5jbHVkZSA8bGludXgvaXAuaD4NCisjaW5jbHVkZSA8bGludXgvdWRwLmg+
DQorI2luY2x1ZGUgPGxpbnV4L3RjcC5oPg0KKyNpbmNsdWRlIDxsaW51eC90
aW1lLmg+DQorDQorI2luY2x1ZGUgPGxpbnV4L3Byb2NfZnMuaD4NCisjaW5j
bHVkZSA8YXNtL3VhY2Nlc3MuaD4NCisNCisjaW5jbHVkZSA8bGludXgvc3Ry
aW5nLmg+DQorI2luY2x1ZGUgPGxpbnV4L25ldGRldmljZS5oPg0KKyNpbmNs
dWRlIDxuZXQvcGt0X3NjaGVkLmg+DQorDQorI2RlZmluZSBNT0RVTEVfTkFN
RSAiZHVwIHYwLjEiDQorI2lmIDANCisjZGVmaW5lIERQUklOVEsoZm9ybWF0
LGFyZ3MuLi4pCXByaW50ayhLRVJOX0RFQlVHIE1PRFVMRV9OQU1FICI6ICIg
Zm9ybWF0LCAjI2FyZ3MpDQorI2Vsc2UNCisjZGVmaW5lIERQUklOVEsoZm9y
bWF0LGFyZ3MuLi4pDQorI2VuZGlmDQorDQorLyogZ2xvYmFsIHZhcmlhYmxl
cyAqLw0KKw0KKy8qIHFkaXNjIGludGVybmFsIGRhdGEgKi8NCitzdHJ1Y3Qg
ZHVwX3NjaGVkX2RhdGEgew0KKwlfX3UzMiBsaW1pdDsJCS8qIGluIHBhY2tl
dHMgKi8NCisJX191MzIgZ2FwOwkJLyogZ2FwICsgMSBiZXR3ZWVuIGR1cGxp
Y2F0ZSBwYWNrZXRzICovDQorCQkJCS8qIDAgPSBkaXNhYmxlICovDQorCQkJ
CS8qIDEgPSBkdXAgZXZlcnkgcGFja2V0ICovDQorCQkJCS8qIDIgPSAxIG5v
cm1hbCwgb25lIGR1cGxpY2F0ZWQgKi8NCisJX191MzIgY291bnRlcjsNCit9
Ow0KKw0KK3N0YXRpYyBpbnQgZHVwX2luaXQoc3RydWN0IFFkaXNjICpzY2gs
IHN0cnVjdCBydGF0dHIgKm9wdCkNCit7DQorCXN0cnVjdCBkdXBfc2NoZWRf
ZGF0YSAqcSA9IChzdHJ1Y3QgZHVwX3NjaGVkX2RhdGEgKilzY2gtPmRhdGE7
DQorDQorCXEtPmNvdW50ZXIgPSAwOw0KKw0KKwlpZiAoIW9wdCkgew0KKwkJ
cS0+bGltaXQgPSBzY2gtPmRldi0+dHhfcXVldWVfbGVuOw0KKwkJcS0+Z2Fw
ID0gMDsNCisJfSBlbHNlIHsNCisJCXN0cnVjdCB0Y19kdXBfcW9wdCAqY3Rs
ID0gUlRBX0RBVEEob3B0KTsNCisNCisJCWlmIChvcHQtPnJ0YV9sZW4gPCBS
VEFfTEVOR1RIKHNpemVvZigqY3RsKSkpDQorCQkJcmV0dXJuIC1FSU5WQUw7
DQorDQorCQlxLT5saW1pdCA9IGN0bC0+bGltaXQgPiAwID8gY3RsLT5saW1p
dCA6IDEwMDsNCisJCXEtPmdhcCA9IGN0bC0+Z2FwOw0KKwl9DQorDQorCXJl
dHVybiAwOw0KK30NCisNCitzdGF0aWMgaW50IGR1cF9lbnF1ZXVlKHN0cnVj
dCBza19idWZmICpza2IsIHN0cnVjdCBRZGlzYyAqc2NoKQ0KK3sNCisJc3Ry
dWN0IGR1cF9zY2hlZF9kYXRhICpxID0gKHN0cnVjdCBkdXBfc2NoZWRfZGF0
YSAqKXNjaC0+ZGF0YTsNCisNCisJLyogaW5jcmVtZW50IGNvdW50ZXIgKi8N
CisJcS0+Y291bnRlcisrOw0KKw0KKwlEUFJJTlRLKCJlbnF1ZXVlOiBsZW49
JWQgUSVYOiVYIGdhcD0lZCBjb3VudGVyPSVkXG4iLA0KKwkJc2tiLT5sZW4s
IHNjaC0+aGFuZGxlID4+IDE2LCBzY2gtPmhhbmRsZSAmIDB4ZmZmZiwNCisJ
CXEtPmdhcCwgcS0+Y291bnRlcik7DQorDQorCS8qIG5vcm1hbCBzZW5kICov
DQorCWlmIChzY2gtPnEucWxlbiA8IHEtPmxpbWl0KSB7DQorCQlzdHJ1Y3Qg
c2tfYnVmZiAqY2xvbmU7DQorDQorCQlfX3NrYl9xdWV1ZV90YWlsKCZzY2gt
PnEsIHNrYik7DQorCQlzY2gtPnN0YXRzLmJ5dGVzICs9IHNrYi0+bGVuOw0K
KwkJc2NoLT5zdGF0cy5wYWNrZXRzKys7DQorDQorCQkvKiBjbG9uZSBza2Ig
Ki8NCisJCWNsb25lID0gc2tiX2Nsb25lKHNrYiwgR0ZQX0FUT01JQyk7DQor
CQlpZiAoY2xvbmUpIHsNCisJCQkvKiBJZ25vcmUgcXVldWUgc2l6ZS4gV2Ug
cmVhbGx5IG5lZWQgdG8gc2VuZCBhIGR1cGxpY2F0ZS4gOikgKi8NCisJCQlp
ZiAoKHEtPmdhcCA+IDApICYmIChxLT5jb3VudGVyID49IHEtPmdhcCkpIHsN
CisJCQkJRFBSSU5USygiZHVwbGljYXRlIVxuIik7DQorDQorCQkJCS8qIHJl
c2V0IGNvdW50ZXIgKi8NCisJCQkJcS0+Y291bnRlciA9IDA7DQorDQorCQkJ
CS8qIHNlbmQgZHVwbGljYXRlICovDQorCQkJCV9fc2tiX3F1ZXVlX3RhaWwo
JnNjaC0+cSwgY2xvbmUpOw0KKwkJCQlzY2gtPnN0YXRzLmJ5dGVzICs9IGNs
b25lLT5sZW47DQorCQkJCXNjaC0+c3RhdHMucGFja2V0cysrOw0KKwkJCX0g
ZWxzZSB7DQorCQkJCWtmcmVlX3NrYihjbG9uZSk7DQorCQkJfQ0KKwkJfQ0K
Kw0KKwkJcmV0dXJuIDA7DQorCX0NCisNCisJc2NoLT5zdGF0cy5kcm9wcysr
Ow0KKwlrZnJlZV9za2Ioc2tiKTsNCisNCisJcmV0dXJuIE5FVF9YTUlUX0RS
T1A7DQorfQ0KKw0KK3N0YXRpYyBpbnQgZHVwX3JlcXVldWUoc3RydWN0IHNr
X2J1ZmYgKnNrYiwgc3RydWN0IFFkaXNjICpzY2gpDQorew0KKw0KKwlfX3Nr
Yl9xdWV1ZV9oZWFkKCZzY2gtPnEsIHNrYik7DQorDQorCXJldHVybiAwOw0K
K30NCisNCitzdGF0aWMgc3RydWN0IHNrX2J1ZmYgKmR1cF9kZXF1ZXVlKHN0
cnVjdCBRZGlzYyAqc2NoKQ0KK3sNCisJc3RydWN0IHNrX2J1ZmYgKnNrYjsN
CisNCisJc2tiID0gX19za2JfZGVxdWV1ZSgmc2NoLT5xKTsNCisNCisJcmV0
dXJuIHNrYjsNCit9DQorDQorc3RhdGljIHVuc2lnbmVkIGludCBkdXBfZHJv
cChzdHJ1Y3QgUWRpc2MgKnNjaCkNCit7DQorCXN0cnVjdCBza19idWZmICpz
a2I7DQorDQorCXNrYiA9IF9fc2tiX2RlcXVldWVfdGFpbCgmc2NoLT5xKTsN
CisJaWYgKHNrYikgew0KKwkJdW5zaWduZWQgaW50IGxlbiA9IHNrYi0+bGVu
Ow0KKw0KKwkJc2NoLT5zdGF0cy5iYWNrbG9nIC09IGxlbjsNCisJCWtmcmVl
X3NrYihza2IpOw0KKwkJcmV0dXJuIGxlbjsNCisJfQ0KKw0KKwlyZXR1cm4g
MDsNCit9DQorDQorc3RhdGljIHZvaWQgZHVwX3Jlc2V0KHN0cnVjdCBRZGlz
YyAqc2NoKQ0KK3sNCisNCisJc2tiX3F1ZXVlX3B1cmdlKCZzY2gtPnEpOw0K
KwlzY2gtPnN0YXRzLmJhY2tsb2cgPSAwOw0KK30NCisNCitzdGF0aWMgaW50
IGR1cF9kdW1wKHN0cnVjdCBRZGlzYyAqc2NoLCBzdHJ1Y3Qgc2tfYnVmZiAq
c2tiKQ0KK3sNCisJc3RydWN0IGR1cF9zY2hlZF9kYXRhICpxID0gKHN0cnVj
dCBkdXBfc2NoZWRfZGF0YSAqKXNjaC0+ZGF0YTsNCisJc3RydWN0IHRjX2R1
cF9xb3B0IG9wdDsNCisJdW5zaWduZWQgY2hhciAqYiA9IHNrYi0+dGFpbDsN
CisNCisJb3B0LmxpbWl0ID0gcS0+bGltaXQ7DQorCW9wdC5nYXAgPSBxLT5n
YXA7DQorCVJUQV9QVVQoc2tiLCBUQ0FfT1BUSU9OUywgc2l6ZW9mKG9wdCks
ICZvcHQpOw0KKw0KKwlyZXR1cm4gc2tiLT5sZW47DQorDQorICAgICAgcnRh
dHRyX2ZhaWx1cmU6DQorCXNrYl90cmltKHNrYiwgYiAtIHNrYi0+ZGF0YSk7
DQorCXJldHVybiAtMTsNCit9DQorDQorc3RhdGljIHN0cnVjdCBRZGlzY19v
cHMgZHVwX3FkaXNjX29wcyA9IHsNCisJLm5leHQJCT0gTlVMTCwNCisJLmNs
X29wcwkJPSBOVUxMLA0KKwkuaWQJCT0gImR1cCIsDQorCS5wcml2X3NpemUJ
PSBzaXplb2Yoc3RydWN0IGR1cF9zY2hlZF9kYXRhKSwNCisJLmVucXVldWUJ
PSBkdXBfZW5xdWV1ZSwNCisJLmRlcXVldWUJPSBkdXBfZGVxdWV1ZSwNCisJ
LnJlcXVldWUJPSBkdXBfcmVxdWV1ZSwNCisJLmRyb3AJCT0gZHVwX2Ryb3As
DQorCS5pbml0CQk9IGR1cF9pbml0LA0KKwkucmVzZXQJCT0gZHVwX3Jlc2V0
LA0KKwkuZGVzdHJveQk9IE5VTEwsDQorCS5jaGFuZ2UJCT0gZHVwX2luaXQs
DQorCS5kdW1wCQk9IGR1cF9kdW1wLA0KKwkub3duZXIJCT0gVEhJU19NT0RV
TEUsDQorfTsNCisNCitzdGF0aWMgaW50IF9faW5pdCBpbml0X2R1cCh2b2lk
KQ0KK3sNCisJaW50IHJldDsNCisNCisJcHJpbnRrKEtFUk5fSU5GTyAiJXM6
IChDKW9weXJpZ2h0IENhdGFsaW4odXgpIEJPSUUgMjAwMi0yMDAzXG4iLCBN
T0RVTEVfTkFNRSk7DQorDQorCXJldCA9IHJlZ2lzdGVyX3FkaXNjKCZkdXBf
cWRpc2Nfb3BzKTsNCisJaWYgKHJldCAhPSAwKSB7DQorCQlwcmludGsoS0VS
Tl9ERUJVRyAiJXM6IGNhbm5vdCByZWdpc3RlciBxZGlzYyBkdXAuIFNvcnJ5
IVxuIiwNCisJCSAgICAgICBNT0RVTEVfTkFNRSk7DQorCQlyZXR1cm4gLUVO
T01FTTsNCisJfQ0KKw0KKwlyZXR1cm4gMDsNCit9DQorDQorc3RhdGljIHZv
aWQgX19leGl0IGV4aXRfZHVwKHZvaWQpDQorew0KKwlpbnQgcmV0Ow0KKw0K
KwlwcmludGsoS0VSTl9ERUJVRyAiJXM6IEdvb2RieWUhXG4iLCBNT0RVTEVf
TkFNRSk7DQorDQorCXJldCA9IHVucmVnaXN0ZXJfcWRpc2MoJmR1cF9xZGlz
Y19vcHMpOw0KKwlpZiAocmV0ICE9IDApIHsNCisJCXByaW50ayhLRVJOX0RF
QlVHICIlczogQ2Fubm90IHVucmVnaXN0ZXIgcWRpc2MgZHVwLiBTb3JyeSFc
biIsDQorCQkgICAgICAgTU9EVUxFX05BTUUpOw0KKwl9DQorfQ0KKw0KK21v
ZHVsZV9pbml0KGluaXRfZHVwKTsNCittb2R1bGVfZXhpdChleGl0X2R1cCk7
DQorDQorTU9EVUxFX0xJQ0VOU0UoIkdQTCIpOw0KK01PRFVMRV9BVVRIT1Io
IkNhdGFsaW4odXgpIEJPSUUgLSA8Y2F0YWIgYXQgZGV1cm9jb25zdWx0LnJv
PiIpOw0KK01PRFVMRV9ERVNDUklQVElPTigic2NoX2R1cCAtIER1cGxpY2F0
ZSBldmVyeSBuIHBhY2tldCIpOw0K

---1646943047-193734462-1080567496=:13656
Content-Type: TEXT/PLAIN; CHARSET=US-ASCII; NAME=sch_dup_p2
Content-Transfer-Encoding: BASE64
Content-ID: <Pine.LNX.4.58.0403291638161.13656@hosting.rdsbv.ro>
Content-Description: 
Content-Disposition: ATTACHMENT; FILENAME=sch_dup_p2

ZGlmZiAteCAnKi5vJyAteCAnKi5rbycgLXVwciBsaW51eC0yLjYuNS1yYzIt
b3JpZy9pbmNsdWRlL2xpbnV4L3BrdF9zY2hlZC5oIGxpbnV4LTIuNi41LXJj
Mi9pbmNsdWRlL2xpbnV4L3BrdF9zY2hlZC5oDQotLS0gbGludXgtMi42LjUt
cmMyLW9yaWcvaW5jbHVkZS9saW51eC9wa3Rfc2NoZWQuaAkyMDA0LTAzLTIy
IDEwOjE2OjI3LjAwMDAwMDAwMCArMDIwMA0KKysrIGxpbnV4LTIuNi41LXJj
Mi9pbmNsdWRlL2xpbnV4L3BrdF9zY2hlZC5oCTIwMDQtMDMtMjkgMTI6MDE6
MTcuMDAwMDAwMDAwICswMzAwDQpAQCAtNDM4LDQgKzQzOCwxMyBAQCBzdHJ1
Y3QgdGNfZGx5X3FvcHQNCiAJX191MzIJbGF0ZW5jeTsNCiAJX191MzIgICBs
aW1pdDsNCiB9OwkNCisNCisNCisvKiBEdXAgc2VjdGlvbiAqLw0KK3N0cnVj
dCB0Y19kdXBfcW9wdA0KK3sNCisJX191MzIJZ2FwOw0KKwlfX3UzMglsaW1p
dDsNCit9Ow0KKw0KICNlbmRpZg0K

---1646943047-193734462-1080567496=:13656
Content-Type: TEXT/PLAIN; CHARSET=US-ASCII; NAME=iproute2-dup
Content-Transfer-Encoding: BASE64
Content-ID: <Pine.LNX.4.58.0403291638162.13656@hosting.rdsbv.ro>
Content-Description: 
Content-Disposition: ATTACHMENT; FILENAME=iproute2-dup

ZGlmZiAtdXByIGlwcm91dGUyLTIuNC43LW5vdy1zczAyMDExNi10cnkvdGMv
TWFrZWZpbGUgaXByb3V0ZTItMi40Ljctbm93LXNzMDIwMTE2LXRyeS1kdXAv
dGMvTWFrZWZpbGUNCi0tLSBpcHJvdXRlMi0yLjQuNy1ub3ctc3MwMjAxMTYt
dHJ5L3RjL01ha2VmaWxlCTIwMDItMDEtMTAgMDU6MDg6MTguMDAwMDAwMDAw
ICswMjAwDQorKysgaXByb3V0ZTItMi40Ljctbm93LXNzMDIwMTE2LXRyeS1k
dXAvdGMvTWFrZWZpbGUJMjAwNC0wMy0yOSAxMTo1NjoxNS4wMDAwMDAwMDAg
KzAzMDANCkBAIC0yNyw2ICsyNyw3IEBAIGVuZGlmDQogI1RDTU9EVUxFUyAr
PSBxX2Nzei5vDQogI1RDTU9EVUxFUyArPSBxX2hwZnEubw0KICNUQ01PRFVM
RVMgKz0gcV9oZnNjLm8NCitUQ01PRFVMRVMgKz0gcV9kdXAubw0KIA0KIFRD
T0JKICs9ICQoVENNT0RVTEVTKQ0KIA0KT25seSBpbiBpcHJvdXRlMi0yLjQu
Ny1ub3ctc3MwMjAxMTYtdHJ5LWR1cC90YzogcV9kdXAuYw0KZGlmZiAtdXBy
IGlwcm91dGUyLTIuNC43LW5vdy1zczAyMDExNi10cnkvdGMvdGNfcWRpc2Mu
YyBpcHJvdXRlMi0yLjQuNy1ub3ctc3MwMjAxMTYtdHJ5LWR1cC90Yy90Y19x
ZGlzYy5jDQotLS0gaXByb3V0ZTItMi40Ljctbm93LXNzMDIwMTE2LXRyeS90
Yy90Y19xZGlzYy5jCTIwMDItMDEtMTUgMTM6MTU6MjMuMDAwMDAwMDAwICsw
MjAwDQorKysgaXByb3V0ZTItMi40Ljctbm93LXNzMDIwMTE2LXRyeS1kdXAv
dGMvdGNfcWRpc2MuYwkyMDA0LTAzLTI5IDExOjU2OjU2LjAwMDAwMDAwMCAr
MDMwMA0KQEAgLTM2LDcgKzM2LDcgQEAgc3RhdGljIHZvaWQgdXNhZ2Uodm9p
ZCkNCiAJZnByaW50ZihzdGRlcnIsICJcbiIpOw0KIAlmcHJpbnRmKHN0ZGVy
ciwgIiAgICAgICB0YyBxZGlzYyBzaG93IFsgZGV2IFNUUklORyBdIFtpbmdy
ZXNzXVxuIik7DQogCWZwcmludGYoc3RkZXJyLCAiV2hlcmU6XG4iKTsNCi0J
ZnByaW50ZihzdGRlcnIsICJRRElTQ19LSU5EIDo9IHsgW3B8Yl1maWZvIHwg
dGJmIHwgcHJpbyB8IGNicSB8IHJlZCB8IGV0Yy4gfVxuIik7DQorCWZwcmlu
dGYoc3RkZXJyLCAiUURJU0NfS0lORCA6PSB7IFtwfGJdZmlmbyB8IHRiZiB8
IHByaW8gfCBjYnEgfCByZWQgfCBkdXAgfCBldGMuIH1cbiIpOw0KIAlmcHJp
bnRmKHN0ZGVyciwgIk9QVElPTlMgOj0gLi4uIHRyeSB0YyBxZGlzYyBhZGQg
PGRlc2lyZWQgUURJU0NfS0lORD4gaGVscFxuIik7DQogCWV4aXQoLTEpOw0K
IH0NCg==

---1646943047-193734462-1080567496=:13656--