* iproute2 does not select 1st default route in table?
@ 2014-04-16 11:34 Ole Craig
2014-04-16 12:01 ` Joel Gerber
` (10 more replies)
0 siblings, 11 replies; 12+ messages in thread
From: Ole Craig @ 2014-04-16 11:34 UTC (permalink / raw)
To: lartc
I am having the damnedest time with a dual-IP CentOS5-based appliance
which seems to defy its iproute2 configuration, and I'm here hoping
someone smarter than me (admittedly not a high bar) might be so kind as
to tell me what I'm missing:
# ip route show table main
10.1.1.1 dev tun0 proto kernel scope link src 10.1.1.7
10.250.32.1 via 10.1.1.1 dev tun0
10.250.10.0/24 via 10.1.1.1 dev tun0
192.168.25.0/24 dev eth0 proto kernel scope link src 192.168.25.124
192.168.25.0/24 dev eth1 proto kernel scope link src 192.168.25.100
default via 192.168.25.1 dev eth1
default via 192.168.25.1 dev eth0
# ip route get 8.8.8.8
8.8.8.8 via 192.168.25.1 dev eth0 src 192.168.25.124
cache mtu 1500 advmss 1460 hoplimit 64
I have been playing with this box for several days, and no matter what I
do (including reboots) it wants to route almost everything out eth0
instead of eth1, despite the ordering of default routes shown above
which should see eth1 taking precedence. No iptables
PREROUTING/nat/mangle/raw stuff, this is all straight iproute2.
I determined that the 'main' table was the one at issue by inserting and
removing an overriding rule at various priorities to see when 'ip get'
would change behavior:
# ip rule show | tail
32758: from all to 192.168.72.0/24 lookup defroutes
32759: from 192.168.72.0/24 lookup defroutes
32760: from 192.168.72.0/24 lookup mgtroutes
32766: from all lookup main
32767: from all lookup default
# ip route add table custom to 8.8.8.0/24 via 192.168.72.1 dev eth1 src 192.168.72.100
# for i in $(seq 32767 -1 32764); do ip rule add prio $i to 8.8.8.0/24 lookup custom; ip route flush cache; sleep 2; echo -en "$i:\t"; ip route get 8.8.8.8| head -1; ip rule del prio $i to 8.8.8.0/24 lookup custom; ip route flush cache; sleep 2; done
32767: 8.8.8.8 via 192.168.72.1 dev eth0 src 192.168.72.124
32766: 8.8.8.8 via 192.168.72.1 dev eth0 src 192.168.72.124
32765: 8.8.8.8 via 192.168.72.1 dev eth1 src 192.168.72.100
32764: 8.8.8.8 via 192.168.72.1 dev eth1 src 192.168.72.100
Both interfaces are up, and are *able* to reach 8.8.8.8 via the upstream
gw:
# ping -c 1 -I eth0 8.8.8.8
PING 8.8.8.8 (8.8.8.8) from 192.168.72.124 eth0: 56(84) bytes of data.
64 bytes from 8.8.8.8: icmp_seq=1 ttlG time\x14.9 ms
--- 8.8.8.8 ping statistics ---
1 packets transmitted, 1 received, 0% packet loss, time 0ms
rtt min/avg/max/mdev = 14.990/14.990/14.990/0.000 ms
# ping -c 1 -I eth1 8.8.8.8
PING 8.8.8.8 (8.8.8.8) from 192.168.72.100 eth1: 56(84) bytes of data.
64 bytes from 8.8.8.8: icmp_seq=1 ttlG time\x14.9 ms
--- 8.8.8.8 ping statistics ---
1 packets transmitted, 1 received, 0% packet loss, time 0ms
rtt min/avg/max/mdev = 14.999/14.999/14.999/0.000 ms
Can anyone help my figure out why this box (alone out of many, many
appliances with similar configurations at various customer sites) is
determined to reach out through eth0?
The full RPDB ruleset:
# ip rule show
0: from all lookup 255
10: from all lookup bootstrap
32736: from all to 128.119.40.1 lookup mgtroutes
32737: from all to 192.168.126.228 lookup mgtroutes
32738: from all to 192.168.76.232 lookup mgtroutes
32739: from all to 192.168.90.112 lookup mgtroutes
32740: from all to 192.168.61.112 lookup mgtroutes
32741: from all to 192.168.76.232 lookup mgtroutes
32742: from all to 192.168.61.112 lookup mgtroutes
32743: from all to 192.168.34.35 lookup mgtroutes
32744: from all to 192.168.61.112 lookup defroutes
32745: from all to 192.168.134.47 lookup mgtroutes
32746: from all to 192.168.127.68 lookup mgtroutes
32747: from all to 192.168.66.6 lookup mgtroutes
32748: from all to 192.168.126.228 lookup mgtroutes
32749: from all to 192.168.127.68 lookup mgtroutes
32750: from all to 192.168.134.41 lookup mgtroutes
32751: from all to 192.168.134.41 lookup mgtroutes
32752: from all to 192.168.76.232 lookup mgtroutes
32753: from all to 107.23.15.175 lookup mgtroutes
32754: from all to 216.87.69.94 lookup mgtroutes
32755: from 192.168.72.124 lookup mgtroutes
32756: from 192.168.72.100 lookup defroutes
32757: from 192.168.72.0/24 to 192.168.72.0/24 lookup mgtroutes
32758: from all to 192.168.72.0/24 lookup defroutes
32759: from 192.168.72.0/24 lookup defroutes
32760: from 192.168.72.0/24 lookup mgtroutes
32766: from all lookup main
32767: from all lookup default
Thank you for any clue you can spare,
Ole
--
Ole Craig <olc@macmillan-craig.net>
^ permalink raw reply [flat|nested] 12+ messages in thread
* RE: iproute2 does not select 1st default route in table?
2014-04-16 11:34 iproute2 does not select 1st default route in table? Ole Craig
@ 2014-04-16 12:01 ` Joel Gerber
2014-04-16 15:08 ` Ole Craig
` (9 subsequent siblings)
10 siblings, 0 replies; 12+ messages in thread
From: Joel Gerber @ 2014-04-16 12:01 UTC (permalink / raw)
To: lartc
Hello Ole;
If you have multiple routes set with the same metric to the same destination, by default, the Linux kernel will choose the lowest numbered interface to use. This would be why eth0 is being hit every time. It has nothing to do with your ip rule definitions. If you wanted to prefer eth1, add a larger metric flag to the eth0 route, which will cause eth1 to be used instead. Then, only in the event that eth1 is link-down, will eth0 be used.
You could also setup ECMP (Equal Cost Multi Path) which would allow you to load-balance traffic across both interfaces. To do this, add the equalize option to your 2 default routes when adding them. You might need to verify that you have multipath support baked into your kernel first.
Joel Gerber
Network Specialist
Network Operations
Eastlink
E: Joel.Gerber@corp.eastlink.ca T: 519.786.1241
-----Original Message-----
From: lartc-owner@vger.kernel.org [mailto:lartc-owner@vger.kernel.org] On Behalf Of Ole Craig
Sent: April-16-14 7:34 AM
To: lartc@vger.kernel.org
Subject: iproute2 does not select 1st default route in table?
I am having the damnedest time with a dual-IP CentOS5-based appliance which seems to defy its iproute2 configuration, and I'm here hoping someone smarter than me (admittedly not a high bar) might be so kind as to tell me what I'm missing:
# ip route show table main
10.1.1.1 dev tun0 proto kernel scope link src 10.1.1.7
10.250.32.1 via 10.1.1.1 dev tun0
10.250.10.0/24 via 10.1.1.1 dev tun0
192.168.25.0/24 dev eth0 proto kernel scope link src 192.168.25.124
192.168.25.0/24 dev eth1 proto kernel scope link src 192.168.25.100
default via 192.168.25.1 dev eth1
default via 192.168.25.1 dev eth0
# ip route get 8.8.8.8
8.8.8.8 via 192.168.25.1 dev eth0 src 192.168.25.124
cache mtu 1500 advmss 1460 hoplimit 64
I have been playing with this box for several days, and no matter what I do (including reboots) it wants to route almost everything out eth0 instead of eth1, despite the ordering of default routes shown above which should see eth1 taking precedence. No iptables PREROUTING/nat/mangle/raw stuff, this is all straight iproute2.
I determined that the 'main' table was the one at issue by inserting and removing an overriding rule at various priorities to see when 'ip get'
would change behavior:
# ip rule show | tail
32758: from all to 192.168.72.0/24 lookup defroutes
32759: from 192.168.72.0/24 lookup defroutes
32760: from 192.168.72.0/24 lookup mgtroutes
32766: from all lookup main
32767: from all lookup default
# ip route add table custom to 8.8.8.0/24 via 192.168.72.1 dev eth1 src 192.168.72.100
# for i in $(seq 32767 -1 32764); do ip rule add prio $i to 8.8.8.0/24 lookup custom; ip route flush cache; sleep 2; echo -en "$i:\t"; ip route get 8.8.8.8| head -1; ip rule del prio $i to 8.8.8.0/24 lookup custom; ip route flush cache; sleep 2; done
32767: 8.8.8.8 via 192.168.72.1 dev eth0 src 192.168.72.124
32766: 8.8.8.8 via 192.168.72.1 dev eth0 src 192.168.72.124
32765: 8.8.8.8 via 192.168.72.1 dev eth1 src 192.168.72.100
32764: 8.8.8.8 via 192.168.72.1 dev eth1 src 192.168.72.100
Both interfaces are up, and are *able* to reach 8.8.8.8 via the upstream
gw:
# ping -c 1 -I eth0 8.8.8.8
PING 8.8.8.8 (8.8.8.8) from 192.168.72.124 eth0: 56(84) bytes of data.
64 bytes from 8.8.8.8: icmp_seq=1 ttlG time\x14.9 ms
--- 8.8.8.8 ping statistics ---
1 packets transmitted, 1 received, 0% packet loss, time 0ms
rtt min/avg/max/mdev = 14.990/14.990/14.990/0.000 ms
# ping -c 1 -I eth1 8.8.8.8
PING 8.8.8.8 (8.8.8.8) from 192.168.72.100 eth1: 56(84) bytes of data.
64 bytes from 8.8.8.8: icmp_seq=1 ttlG time\x14.9 ms
--- 8.8.8.8 ping statistics ---
1 packets transmitted, 1 received, 0% packet loss, time 0ms
rtt min/avg/max/mdev = 14.999/14.999/14.999/0.000 ms
Can anyone help my figure out why this box (alone out of many, many appliances with similar configurations at various customer sites) is determined to reach out through eth0?
The full RPDB ruleset:
# ip rule show
0: from all lookup 255
10: from all lookup bootstrap
32736: from all to 128.119.40.1 lookup mgtroutes
32737: from all to 192.168.126.228 lookup mgtroutes
32738: from all to 192.168.76.232 lookup mgtroutes
32739: from all to 192.168.90.112 lookup mgtroutes
32740: from all to 192.168.61.112 lookup mgtroutes
32741: from all to 192.168.76.232 lookup mgtroutes
32742: from all to 192.168.61.112 lookup mgtroutes
32743: from all to 192.168.34.35 lookup mgtroutes
32744: from all to 192.168.61.112 lookup defroutes
32745: from all to 192.168.134.47 lookup mgtroutes
32746: from all to 192.168.127.68 lookup mgtroutes
32747: from all to 192.168.66.6 lookup mgtroutes
32748: from all to 192.168.126.228 lookup mgtroutes
32749: from all to 192.168.127.68 lookup mgtroutes
32750: from all to 192.168.134.41 lookup mgtroutes
32751: from all to 192.168.134.41 lookup mgtroutes
32752: from all to 192.168.76.232 lookup mgtroutes
32753: from all to 107.23.15.175 lookup mgtroutes
32754: from all to 216.87.69.94 lookup mgtroutes
32755: from 192.168.72.124 lookup mgtroutes
32756: from 192.168.72.100 lookup defroutes
32757: from 192.168.72.0/24 to 192.168.72.0/24 lookup mgtroutes
32758: from all to 192.168.72.0/24 lookup defroutes
32759: from 192.168.72.0/24 lookup defroutes
32760: from 192.168.72.0/24 lookup mgtroutes
32766: from all lookup main
32767: from all lookup default
Thank you for any clue you can spare,
Ole
--
Ole Craig <olc@macmillan-craig.net>
--
To unsubscribe from this list: send the line "unsubscribe lartc" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
^ permalink raw reply [flat|nested] 12+ messages in thread
* RE: iproute2 does not select 1st default route in table?
2014-04-16 11:34 iproute2 does not select 1st default route in table? Ole Craig
2014-04-16 12:01 ` Joel Gerber
@ 2014-04-16 15:08 ` Ole Craig
2014-04-16 19:51 ` Joel Gerber
` (8 subsequent siblings)
10 siblings, 0 replies; 12+ messages in thread
From: Ole Craig @ 2014-04-16 15:08 UTC (permalink / raw)
To: lartc
SGVsbG8gSm9lbCwKVGhlcmUgbXVzdCBiZSBzb21ldGhpbmcgZWxzZSBpbiBwbGF5OyB3ZSBtYW5h
Z2UgaHVuZHJlZHMgb2Ygb3RoZXIgc2ltaWxhciBhcHBsaWFuY2VzIGFuZCB0aGlzIGlzIHRoZSBv
bmx5IG9uZSB0aGF0J3MgZXhoaWJpdGluZyB0aGlzIGJlaGF2aW9yLiAoInNpbWlsYXIiID09ICJz
YW1lIGhhcmR3YXJlIHNwZWMsIHNhbWUgc29mdHdhcmUgc3BlYywgb25seSB0aGUgSVBzIGFyZSBk
aWZmZXJlbnQiIC0tIGFuZCB5ZXMsIG1vc3Qgb2YgdGhlbSBoYXZlIGV0aDAgYW5kIGV0aDEgc2hh
cmluZyBhIHN1Ym5ldCBhbmQgZ3csIGFuZCBldGgxIGlzIGFsd2F5cyB0aGUgZGVmYXVsdCByb3V0
ZSBmb3IgcGFja2V0cyBub3QgYnVpbHQgd2l0aCBhIHNwZWNpZmljIHNvdXJjZSBJUC4pCgpUaGFu
a3MsIAogICAgT2xlCgpKb2VsIEdlcmJlciA8Sm9lbC5HZXJiZXJAY29ycC5lYXN0bGluay5jYT4g
d3JvdGU6Cgo+SGVsbG8gT2xlOwo+Cj5JZiB5b3UgaGF2ZSBtdWx0aXBsZSByb3V0ZXMgc2V0IHdp
dGggdGhlIHNhbWUgbWV0cmljIHRvIHRoZSBzYW1lIGRlc3RpbmF0aW9uLCBieSBkZWZhdWx0LCB0
aGUgTGludXgga2VybmVsIHdpbGwgY2hvb3NlIHRoZSBsb3dlc3QgbnVtYmVyZWQgaW50ZXJmYWNl
IHRvIHVzZS4gVGhpcyB3b3VsZCBiZSB3aHkgZXRoMCBpcyBiZWluZyBoaXQgZXZlcnkgdGltZS4g
SXQgaGFzIG5vdGhpbmcgdG8gZG8gd2l0aCB5b3VyIGlwIHJ1bGUgZGVmaW5pdGlvbnMuIElmIHlv
dSB3YW50ZWQgdG8gcHJlZmVyIGV0aDEsIGFkZCBhIGxhcmdlciBtZXRyaWMgZmxhZyB0byB0aGUg
ZXRoMCByb3V0ZSwgd2hpY2ggd2lsbCBjYXVzZSBldGgxIHRvIGJlIHVzZWQgaW5zdGVhZC4gVGhl
biwgb25seSBpbiB0aGUgZXZlbnQgdGhhdCBldGgxIGlzIGxpbmstZG93biwgd2lsbCBldGgwIGJl
IHVzZWQuCj4KPllvdSBjb3VsZCBhbHNvIHNldHVwIEVDTVAgKEVxdWFsIENvc3QgTXVsdGkgUGF0
aCkgd2hpY2ggd291bGQgYWxsb3cgeW91IHRvIGxvYWQtYmFsYW5jZSB0cmFmZmljIGFjcm9zcyBi
b3RoIGludGVyZmFjZXMuIFRvIGRvIHRoaXMsIGFkZCB0aGUgZXF1YWxpemUgb3B0aW9uIHRvIHlv
dXIgMiBkZWZhdWx0IHJvdXRlcyB3aGVuIGFkZGluZyB0aGVtLiBZb3UgbWlnaHQgbmVlZCB0byB2
ZXJpZnkgdGhhdCB5b3UgaGF2ZSBtdWx0aXBhdGggc3VwcG9ydCBiYWtlZCBpbnRvIHlvdXIga2Vy
bmVsIGZpcnN0Lgo+Cj5Kb2VsIEdlcmJlcgo+TmV0d29yayBTcGVjaWFsaXN0Cj5OZXR3b3JrIE9w
ZXJhdGlvbnMKPkVhc3RsaW5rCj5FOiBKb2VsLkdlcmJlckBjb3JwLmVhc3RsaW5rLmNhIFQ6IDUx
OS43ODYuMTI0MQo+Cj4tLS0tLU9yaWdpbmFsIE1lc3NhZ2UtLS0tLQo+RnJvbTogbGFydGMtb3du
ZXJAdmdlci5rZXJuZWwub3JnIFttYWlsdG86bGFydGMtb3duZXJAdmdlci5rZXJuZWwub3JnXSBP
biBCZWhhbGYgT2YgT2xlIENyYWlnCj5TZW50OiBBcHJpbC0xNi0xNCA3OjM0IEFNCj5UbzogbGFy
dGNAdmdlci5rZXJuZWwub3JnCj5TdWJqZWN0OiBpcHJvdXRlMiBkb2VzIG5vdCBzZWxlY3QgMXN0
IGRlZmF1bHQgcm91dGUgaW4gdGFibGU/Cj4KPkkgYW0gaGF2aW5nIHRoZSBkYW1uZWRlc3QgdGlt
ZSB3aXRoIGEgZHVhbC1JUCBDZW50T1M1LWJhc2VkIGFwcGxpYW5jZSB3aGljaCBzZWVtcyB0byBk
ZWZ5IGl0cyBpcHJvdXRlMiBjb25maWd1cmF0aW9uLCBhbmQgSSdtIGhlcmUgaG9waW5nIHNvbWVv
bmUgc21hcnRlciB0aGFuIG1lIChhZG1pdHRlZGx5IG5vdCBhIGhpZ2ggYmFyKSBtaWdodCBiZSBz
byBraW5kIGFzIHRvIHRlbGwgbWUgd2hhdCBJJ20gbWlzc2luZzoKPiAgICAgICAgIyBpcCByb3V0
ZSBzaG93IHRhYmxlIG1haW4KPiAgICAgICAgMTAuMS4xLjEgZGV2IHR1bjAgIHByb3RvIGtlcm5l
bCAgc2NvcGUgbGluayAgc3JjIDEwLjEuMS43IAo+ICAgICAgICAxMC4yNTAuMzIuMSB2aWEgMTAu
MS4xLjEgZGV2IHR1bjAgCj4gICAgICAgIDEwLjI1MC4xMC4wLzI0IHZpYSAxMC4xLjEuMSBkZXYg
dHVuMCAKPiAgICAgICAgMTkyLjE2OC4yNS4wLzI0IGRldiBldGgwICBwcm90byBrZXJuZWwgIHNj
b3BlIGxpbmsgIHNyYyAxOTIuMTY4LjI1LjEyNCAKPiAgICAgICAgMTkyLjE2OC4yNS4wLzI0IGRl
diBldGgxICBwcm90byBrZXJuZWwgIHNjb3BlIGxpbmsgIHNyYyAxOTIuMTY4LjI1LjEwMCAKPiAg
ICAgICAgZGVmYXVsdCB2aWEgMTkyLjE2OC4yNS4xIGRldiBldGgxIAo+ICAgICAgICBkZWZhdWx0
IHZpYSAxOTIuMTY4LjI1LjEgZGV2IGV0aDAgCj4gICAgICAgICMgaXAgcm91dGUgZ2V0IDguOC44
LjggCj4gICAgICAgIDguOC44LjggdmlhIDE5Mi4xNjguMjUuMSBkZXYgZXRoMCAgc3JjIDE5Mi4x
NjguMjUuMTI0IAo+ICAgICAgICAgICAgY2FjaGUgIG10dSAxNTAwIGFkdm1zcyAxNDYwIGhvcGxp
bWl0IDY0Cj4KPkkgaGF2ZSBiZWVuIHBsYXlpbmcgd2l0aCB0aGlzIGJveCBmb3Igc2V2ZXJhbCBk
YXlzLCBhbmQgbm8gbWF0dGVyIHdoYXQgSSBkbyAoaW5jbHVkaW5nIHJlYm9vdHMpIGl0IHdhbnRz
IHRvIHJvdXRlIGFsbW9zdCBldmVyeXRoaW5nIG91dCBldGgwIGluc3RlYWQgb2YgZXRoMSwgZGVz
cGl0ZSB0aGUgb3JkZXJpbmcgb2YgZGVmYXVsdCByb3V0ZXMgc2hvd24gYWJvdmUgd2hpY2ggc2hv
dWxkIHNlZSBldGgxIHRha2luZyBwcmVjZWRlbmNlLiBObyBpcHRhYmxlcyBQUkVST1VUSU5HL25h
dC9tYW5nbGUvcmF3IHN0dWZmLCB0aGlzIGlzIGFsbCBzdHJhaWdodCBpcHJvdXRlMi4KPgo+SSBk
ZXRlcm1pbmVkIHRoYXQgdGhlICdtYWluJyB0YWJsZSB3YXMgdGhlIG9uZSBhdCBpc3N1ZSBieSBp
bnNlcnRpbmcgYW5kIHJlbW92aW5nIGFuIG92ZXJyaWRpbmcgcnVsZSBhdCB2YXJpb3VzIHByaW9y
aXRpZXMgdG8gc2VlIHdoZW4gJ2lwIGdldCcKPndvdWxkIGNoYW5nZSBiZWhhdmlvcjoKPiAgICAg
ICAgIyBpcCBydWxlIHNob3cgfCB0YWlsCj4gICAgICAgIDMyNzU4Oglmcm9tIGFsbCB0byAxOTIu
MTY4LjcyLjAvMjQgbG9va3VwIGRlZnJvdXRlcyAKPiAgICAgICAgMzI3NTk6CWZyb20gMTkyLjE2
OC43Mi4wLzI0IGxvb2t1cCBkZWZyb3V0ZXMgCj4gICAgICAgIDMyNzYwOglmcm9tIDE5Mi4xNjgu
NzIuMC8yNCBsb29rdXAgbWd0cm91dGVzIAo+ICAgICAgICAzMjc2NjoJZnJvbSBhbGwgbG9va3Vw
IG1haW4gCj4gICAgICAgIDMyNzY3Oglmcm9tIGFsbCBsb29rdXAgZGVmYXVsdCAKPiAgICAgICAg
IyBpcCByb3V0ZSBhZGQgdGFibGUgY3VzdG9tIHRvIDguOC44LjAvMjQgdmlhIDE5Mi4xNjguNzIu
MSBkZXYgZXRoMSBzcmMgMTkyLjE2OC43Mi4xMDAKPiAgICAgICAgIyBmb3IgaSBpbiAkKHNlcSAz
Mjc2NyAtMSAzMjc2NCk7IGRvIGlwIHJ1bGUgYWRkIHByaW8gJGkgdG8gOC44LjguMC8yNCBsb29r
dXAgY3VzdG9tOyBpcCByb3V0ZSBmbHVzaCBjYWNoZTsgc2xlZXAgMjsgZWNobyAtZW4gIiRpOlx0
IjsgaXAgcm91dGUgZ2V0IDguOC44Ljh8IGhlYWQgLTE7IGlwIHJ1bGUgZGVsIHByaW8gJGkgdG8g
OC44LjguMC8yNCBsb29rdXAgY3VzdG9tOyBpcCByb3V0ZSBmbHVzaCBjYWNoZTsgc2xlZXAgMjsg
ZG9uZSAKPiAgICAgICAgMzI3Njc6CTguOC44LjggdmlhIDE5Mi4xNjguNzIuMSBkZXYgZXRoMCAg
c3JjIDE5Mi4xNjguNzIuMTI0IAo+ICAgICAgICAzMjc2NjoJOC44LjguOCB2aWEgMTkyLjE2OC43
Mi4xIGRldiBldGgwICBzcmMgMTkyLjE2OC43Mi4xMjQgCj4gICAgICAgIDMyNzY1Ogk4LjguOC44
IHZpYSAxOTIuMTY4LjcyLjEgZGV2IGV0aDEgIHNyYyAxOTIuMTY4LjcyLjEwMCAKPiAgICAgICAg
MzI3NjQ6CTguOC44LjggdmlhIDE5Mi4xNjguNzIuMSBkZXYgZXRoMSAgc3JjIDE5Mi4xNjguNzIu
MTAwIAo+ICAgICAgICAKPkJvdGggaW50ZXJmYWNlcyBhcmUgdXAsIGFuZCBhcmUgKmFibGUqIHRv
IHJlYWNoIDguOC44LjggdmlhIHRoZSB1cHN0cmVhbQo+Z3c6Cj4gICAgICAgICMgcGluZyAtYyAx
IC1JIGV0aDAgOC44LjguOCAKPiAgICAgICAgUElORyA4LjguOC44ICg4LjguOC44KSBmcm9tIDE5
Mi4xNjguNzIuMTI0IGV0aDA6IDU2KDg0KSBieXRlcyBvZiBkYXRhLgo+ICAgICAgICA2NCBieXRl
cyBmcm9tIDguOC44Ljg6IGljbXBfc2VxPTEgdHRsPTQ3IHRpbWU9MTQuOSBtcwo+ICAgICAgICAK
PiAgICAgICAgLS0tIDguOC44LjggcGluZyBzdGF0aXN0aWNzIC0tLQo+ICAgICAgICAxIHBhY2tl
dHMgdHJhbnNtaXR0ZWQsIDEgcmVjZWl2ZWQsIDAlIHBhY2tldCBsb3NzLCB0aW1lIDBtcwo+ICAg
ICAgICBydHQgbWluL2F2Zy9tYXgvbWRldiA9IDE0Ljk5MC8xNC45OTAvMTQuOTkwLzAuMDAwIG1z
Cj4gICAgICAgICMgcGluZyAtYyAxIC1JIGV0aDEgOC44LjguOCAKPiAgICAgICAgUElORyA4Ljgu
OC44ICg4LjguOC44KSBmcm9tIDE5Mi4xNjguNzIuMTAwIGV0aDE6IDU2KDg0KSBieXRlcyBvZiBk
YXRhLgo+ICAgICAgICA2NCBieXRlcyBmcm9tIDguOC44Ljg6IGljbXBfc2VxPTEgdHRsPTQ3IHRp
bWU9MTQuOSBtcwo+ICAgICAgICAKPiAgICAgICAgLS0tIDguOC44LjggcGluZyBzdGF0aXN0aWNz
IC0tLQo+ICAgICAgICAxIHBhY2tldHMgdHJhbnNtaXR0ZWQsIDEgcmVjZWl2ZWQsIDAlIHBhY2tl
dCBsb3NzLCB0aW1lIDBtcwo+ICAgICAgICBydHQgbWluL2F2Zy9tYXgvbWRldiA9IDE0Ljk5OS8x
NC45OTkvMTQuOTk5LzAuMDAwIG1zCj4gICAgICAgIAo+Q2FuIGFueW9uZSBoZWxwIG15IGZpZ3Vy
ZSBvdXQgd2h5IHRoaXMgYm94IChhbG9uZSBvdXQgb2YgbWFueSwgbWFueSBhcHBsaWFuY2VzIHdp
dGggc2ltaWxhciBjb25maWd1cmF0aW9ucyBhdCB2YXJpb3VzIGN1c3RvbWVyIHNpdGVzKSBpcyBk
ZXRlcm1pbmVkIHRvIHJlYWNoIG91dCB0aHJvdWdoIGV0aDA/Cj4KPlRoZSBmdWxsIFJQREIgcnVs
ZXNldDoKPiAgICAgICAgIyBpcCBydWxlIHNob3cgCj4gICAgICAgIDA6CWZyb20gYWxsIGxvb2t1
cCAyNTUgCj4gICAgICAgIDEwOglmcm9tIGFsbCBsb29rdXAgYm9vdHN0cmFwIAo+ICAgICAgICAz
MjczNjoJZnJvbSBhbGwgdG8gMTI4LjExOS40MC4xIGxvb2t1cCBtZ3Ryb3V0ZXMgCj4gICAgICAg
IDMyNzM3Oglmcm9tIGFsbCB0byAxOTIuMTY4LjEyNi4yMjggbG9va3VwIG1ndHJvdXRlcyAKPiAg
ICAgICAgMzI3Mzg6CWZyb20gYWxsIHRvIDE5Mi4xNjguNzYuMjMyIGxvb2t1cCBtZ3Ryb3V0ZXMg
Cj4gICAgICAgIDMyNzM5Oglmcm9tIGFsbCB0byAxOTIuMTY4LjkwLjExMiBsb29rdXAgbWd0cm91
dGVzIAo+ICAgICAgICAzMjc0MDoJZnJvbSBhbGwgdG8gMTkyLjE2OC42MS4xMTIgbG9va3VwIG1n
dHJvdXRlcyAKPiAgICAgICAgMzI3NDE6CWZyb20gYWxsIHRvIDE5Mi4xNjguNzYuMjMyIGxvb2t1
cCBtZ3Ryb3V0ZXMgCj4gICAgICAgIDMyNzQyOglmcm9tIGFsbCB0byAxOTIuMTY4LjYxLjExMiBs
b29rdXAgbWd0cm91dGVzIAo+ICAgICAgICAzMjc0MzoJZnJvbSBhbGwgdG8gMTkyLjE2OC4zNC4z
NSBsb29rdXAgbWd0cm91dGVzIAo+ICAgICAgICAzMjc0NDoJZnJvbSBhbGwgdG8gMTkyLjE2OC42
MS4xMTIgbG9va3VwIGRlZnJvdXRlcyAKPiAgICAgICAgMzI3NDU6CWZyb20gYWxsIHRvIDE5Mi4x
NjguMTM0LjQ3IGxvb2t1cCBtZ3Ryb3V0ZXMgCj4gICAgICAgIDMyNzQ2Oglmcm9tIGFsbCB0byAx
OTIuMTY4LjEyNy42OCBsb29rdXAgbWd0cm91dGVzIAo+ICAgICAgICAzMjc0NzoJZnJvbSBhbGwg
dG8gMTkyLjE2OC42Ni42IGxvb2t1cCBtZ3Ryb3V0ZXMgCj4gICAgICAgIDMyNzQ4Oglmcm9tIGFs
bCB0byAxOTIuMTY4LjEyNi4yMjggbG9va3VwIG1ndHJvdXRlcyAKPiAgICAgICAgMzI3NDk6CWZy
b20gYWxsIHRvIDE5Mi4xNjguMTI3LjY4IGxvb2t1cCBtZ3Ryb3V0ZXMgCj4gICAgICAgIDMyNzUw
Oglmcm9tIGFsbCB0byAxOTIuMTY4LjEzNC40MSBsb29rdXAgbWd0cm91dGVzIAo+ICAgICAgICAz
Mjc1MToJZnJvbSBhbGwgdG8gMTkyLjE2OC4xMzQuNDEgbG9va3VwIG1ndHJvdXRlcyAKPiAgICAg
ICAgMzI3NTI6CWZyb20gYWxsIHRvIDE5Mi4xNjguNzYuMjMyIGxvb2t1cCBtZ3Ryb3V0ZXMgCj4g
ICAgICAgIDMyNzUzOglmcm9tIGFsbCB0byAxMDcuMjMuMTUuMTc1IGxvb2t1cCBtZ3Ryb3V0ZXMg
Cj4gICAgICAgIDMyNzU0Oglmcm9tIGFsbCB0byAyMTYuODcuNjkuOTQgbG9va3VwIG1ndHJvdXRl
cyAKPiAgICAgICAgMzI3NTU6CWZyb20gMTkyLjE2OC43Mi4xMjQgbG9va3VwIG1ndHJvdXRlcyAK
PiAgICAgICAgMzI3NTY6CWZyb20gMTkyLjE2OC43Mi4xMDAgbG9va3VwIGRlZnJvdXRlcyAKPiAg
ICAgICAgMzI3NTc6CWZyb20gMTkyLjE2OC43Mi4wLzI0IHRvIDE5Mi4xNjguNzIuMC8yNCBsb29r
dXAgbWd0cm91dGVzIAo+ICAgICAgICAzMjc1ODoJZnJvbSBhbGwgdG8gMTkyLjE2OC43Mi4wLzI0
IGxvb2t1cCBkZWZyb3V0ZXMgCj4gICAgICAgIDMyNzU5Oglmcm9tIDE5Mi4xNjguNzIuMC8yNCBs
b29rdXAgZGVmcm91dGVzIAo+ICAgICAgICAzMjc2MDoJZnJvbSAxOTIuMTY4LjcyLjAvMjQgbG9v
a3VwIG1ndHJvdXRlcyAKPiAgICAgICAgMzI3NjY6CWZyb20gYWxsIGxvb2t1cCBtYWluIAo+ICAg
ICAgICAzMjc2NzoJZnJvbSBhbGwgbG9va3VwIGRlZmF1bHQgCj4gICAgICAgIAo+Cj4KPglUaGFu
ayB5b3UgZm9yIGFueSBjbHVlIHlvdSBjYW4gc3BhcmUsCj4JCU9sZQo+LS0KPk9sZSBDcmFpZyA8
b2xjQG1hY21pbGxhbi1jcmFpZy5uZXQ+Cj4KPi0tCj5UbyB1bnN1YnNjcmliZSBmcm9tIHRoaXMg
bGlzdDogc2VuZCB0aGUgbGluZSAidW5zdWJzY3JpYmUgbGFydGMiIGluIHRoZSBib2R5IG9mIGEg
bWVzc2FnZSB0byBtYWpvcmRvbW9Admdlci5rZXJuZWwub3JnIE1vcmUgbWFqb3Jkb21vIGluZm8g
YXQgIGh0dHA6Ly92Z2VyLmtlcm5lbC5vcmcvbWFqb3Jkb21vLWluZm8uaHRtbAo
^ permalink raw reply [flat|nested] 12+ messages in thread
* RE: iproute2 does not select 1st default route in table?
2014-04-16 11:34 iproute2 does not select 1st default route in table? Ole Craig
2014-04-16 12:01 ` Joel Gerber
2014-04-16 15:08 ` Ole Craig
@ 2014-04-16 19:51 ` Joel Gerber
2014-05-09 20:13 ` Ole Craig
` (7 subsequent siblings)
10 siblings, 0 replies; 12+ messages in thread
From: Joel Gerber @ 2014-04-16 19:51 UTC (permalink / raw)
To: lartc
QXJlIHlvdSBydW5uaW5nIGRpZmZlcmVudCB2ZXJzaW9ucyBvZiB0aGUgTGludXgga2VybmVsPw0K
DQpJJ20gcXVpdGUgY2VydGFpbiB0aGF0IHRoZSBvcmRlciB0aGUgcm91dGVzIGFyZSBhZGRlZCBz
aG91bGQgaGF2ZSBubyB3ZWlnaHQgb24gdGhpcyBtYXR0ZXIuIFRoZXJlIGlzIGFsc28gYW5vdGhl
ciBwb3NzaWJpbGl0eS4gWW91IG1pZ2h0IGJlIHJlbmFtaW5nIHRoZSBpbnRlcmZhY2VzIGRpZmZl
cmVudGx5IHRoYXQgdGhlIG9yZGVyIHRoYXQgdGhleSBhcmUgbG9hZGVkIGludG8gdGhlIGtlcm5l
bCBhcy4gV2hpY2hldmVyIGludGVyZmFjZSB3YXMgbG9hZGVkIGZpcnN0IHdpbGwgaGF2ZSB0aGUg
c21hbGxlciBpbnRlcm5hbCBudW1iZXIsIHdoaWNoIGlzIHRoZSBvbmUgdGhhdCB3b3VsZCBnZXQg
c2VsZWN0ZWQgZmlyc3QuDQoNCkpvZWwgR2VyYmVyDQpOZXR3b3JrIFNwZWNpYWxpc3QNCk5ldHdv
cmsgT3BlcmF0aW9ucw0KRWFzdGxpbmsNCkU6IEpvZWwuR2VyYmVyQGNvcnAuZWFzdGxpbmsuY2Eg
VDogNTE5Ljc4Ni4xMjQxDQoNCi0tLS0tT3JpZ2luYWwgTWVzc2FnZS0tLS0tDQpGcm9tOiBPbGUg
Q3JhaWcgW21haWx0bzpvbGNAbWFjbWlsbGFuLWNyYWlnLm5ldF0gDQpTZW50OiBBcHJpbC0xNi0x
NCAxMTowOCBBTQ0KVG86IEpvZWwgR2VyYmVyDQpDYzogbGFydGNAdmdlci5rZXJuZWwub3JnDQpT
dWJqZWN0OiBSRTogaXByb3V0ZTIgZG9lcyBub3Qgc2VsZWN0IDFzdCBkZWZhdWx0IHJvdXRlIGlu
IHRhYmxlPw0KDQpIZWxsbyBKb2VsLA0KVGhlcmUgbXVzdCBiZSBzb21ldGhpbmcgZWxzZSBpbiBw
bGF5OyB3ZSBtYW5hZ2UgaHVuZHJlZHMgb2Ygb3RoZXIgc2ltaWxhciBhcHBsaWFuY2VzIGFuZCB0
aGlzIGlzIHRoZSBvbmx5IG9uZSB0aGF0J3MgZXhoaWJpdGluZyB0aGlzIGJlaGF2aW9yLiAoInNp
bWlsYXIiID09ICJzYW1lIGhhcmR3YXJlIHNwZWMsIHNhbWUgc29mdHdhcmUgc3BlYywgb25seSB0
aGUgSVBzIGFyZSBkaWZmZXJlbnQiIC0tIGFuZCB5ZXMsIG1vc3Qgb2YgdGhlbSBoYXZlIGV0aDAg
YW5kIGV0aDEgc2hhcmluZyBhIHN1Ym5ldCBhbmQgZ3csIGFuZCBldGgxIGlzIGFsd2F5cyB0aGUg
ZGVmYXVsdCByb3V0ZSBmb3IgcGFja2V0cyBub3QgYnVpbHQgd2l0aCBhIHNwZWNpZmljIHNvdXJj
ZSBJUC4pDQoNClRoYW5rcywgDQogICAgT2xlDQoNCkpvZWwgR2VyYmVyIDxKb2VsLkdlcmJlckBj
b3JwLmVhc3RsaW5rLmNhPiB3cm90ZToNCg0KPkhlbGxvIE9sZTsNCj4NCj5JZiB5b3UgaGF2ZSBt
dWx0aXBsZSByb3V0ZXMgc2V0IHdpdGggdGhlIHNhbWUgbWV0cmljIHRvIHRoZSBzYW1lIGRlc3Rp
bmF0aW9uLCBieSBkZWZhdWx0LCB0aGUgTGludXgga2VybmVsIHdpbGwgY2hvb3NlIHRoZSBsb3dl
c3QgbnVtYmVyZWQgaW50ZXJmYWNlIHRvIHVzZS4gVGhpcyB3b3VsZCBiZSB3aHkgZXRoMCBpcyBi
ZWluZyBoaXQgZXZlcnkgdGltZS4gSXQgaGFzIG5vdGhpbmcgdG8gZG8gd2l0aCB5b3VyIGlwIHJ1
bGUgZGVmaW5pdGlvbnMuIElmIHlvdSB3YW50ZWQgdG8gcHJlZmVyIGV0aDEsIGFkZCBhIGxhcmdl
ciBtZXRyaWMgZmxhZyB0byB0aGUgZXRoMCByb3V0ZSwgd2hpY2ggd2lsbCBjYXVzZSBldGgxIHRv
IGJlIHVzZWQgaW5zdGVhZC4gVGhlbiwgb25seSBpbiB0aGUgZXZlbnQgdGhhdCBldGgxIGlzIGxp
bmstZG93biwgd2lsbCBldGgwIGJlIHVzZWQuDQo+DQo+WW91IGNvdWxkIGFsc28gc2V0dXAgRUNN
UCAoRXF1YWwgQ29zdCBNdWx0aSBQYXRoKSB3aGljaCB3b3VsZCBhbGxvdyB5b3UgdG8gbG9hZC1i
YWxhbmNlIHRyYWZmaWMgYWNyb3NzIGJvdGggaW50ZXJmYWNlcy4gVG8gZG8gdGhpcywgYWRkIHRo
ZSBlcXVhbGl6ZSBvcHRpb24gdG8geW91ciAyIGRlZmF1bHQgcm91dGVzIHdoZW4gYWRkaW5nIHRo
ZW0uIFlvdSBtaWdodCBuZWVkIHRvIHZlcmlmeSB0aGF0IHlvdSBoYXZlIG11bHRpcGF0aCBzdXBw
b3J0IGJha2VkIGludG8geW91ciBrZXJuZWwgZmlyc3QuDQo+DQo+Sm9lbCBHZXJiZXINCj5OZXR3
b3JrIFNwZWNpYWxpc3QNCj5OZXR3b3JrIE9wZXJhdGlvbnMNCj5FYXN0bGluaw0KPkU6IEpvZWwu
R2VyYmVyQGNvcnAuZWFzdGxpbmsuY2EgVDogNTE5Ljc4Ni4xMjQxDQo+DQo+LS0tLS1PcmlnaW5h
bCBNZXNzYWdlLS0tLS0NCj5Gcm9tOiBsYXJ0Yy1vd25lckB2Z2VyLmtlcm5lbC5vcmcgW21haWx0
bzpsYXJ0Yy1vd25lckB2Z2VyLmtlcm5lbC5vcmddIE9uIEJlaGFsZiBPZiBPbGUgQ3JhaWcNCj5T
ZW50OiBBcHJpbC0xNi0xNCA3OjM0IEFNDQo+VG86IGxhcnRjQHZnZXIua2VybmVsLm9yZw0KPlN1
YmplY3Q6IGlwcm91dGUyIGRvZXMgbm90IHNlbGVjdCAxc3QgZGVmYXVsdCByb3V0ZSBpbiB0YWJs
ZT8NCj4NCj5JIGFtIGhhdmluZyB0aGUgZGFtbmVkZXN0IHRpbWUgd2l0aCBhIGR1YWwtSVAgQ2Vu
dE9TNS1iYXNlZCBhcHBsaWFuY2Ugd2hpY2ggc2VlbXMgdG8gZGVmeSBpdHMgaXByb3V0ZTIgY29u
ZmlndXJhdGlvbiwgYW5kIEknbSBoZXJlIGhvcGluZyBzb21lb25lIHNtYXJ0ZXIgdGhhbiBtZSAo
YWRtaXR0ZWRseSBub3QgYSBoaWdoIGJhcikgbWlnaHQgYmUgc28ga2luZCBhcyB0byB0ZWxsIG1l
IHdoYXQgSSdtIG1pc3Npbmc6DQo+ICAgICAgICAjIGlwIHJvdXRlIHNob3cgdGFibGUgbWFpbg0K
PiAgICAgICAgMTAuMS4xLjEgZGV2IHR1bjAgIHByb3RvIGtlcm5lbCAgc2NvcGUgbGluayAgc3Jj
IDEwLjEuMS43IA0KPiAgICAgICAgMTAuMjUwLjMyLjEgdmlhIDEwLjEuMS4xIGRldiB0dW4wIA0K
PiAgICAgICAgMTAuMjUwLjEwLjAvMjQgdmlhIDEwLjEuMS4xIGRldiB0dW4wIA0KPiAgICAgICAg
MTkyLjE2OC4yNS4wLzI0IGRldiBldGgwICBwcm90byBrZXJuZWwgIHNjb3BlIGxpbmsgIHNyYyAx
OTIuMTY4LjI1LjEyNCANCj4gICAgICAgIDE5Mi4xNjguMjUuMC8yNCBkZXYgZXRoMSAgcHJvdG8g
a2VybmVsICBzY29wZSBsaW5rICBzcmMgMTkyLjE2OC4yNS4xMDAgDQo+ICAgICAgICBkZWZhdWx0
IHZpYSAxOTIuMTY4LjI1LjEgZGV2IGV0aDEgDQo+ICAgICAgICBkZWZhdWx0IHZpYSAxOTIuMTY4
LjI1LjEgZGV2IGV0aDAgDQo+ICAgICAgICAjIGlwIHJvdXRlIGdldCA4LjguOC44IA0KPiAgICAg
ICAgOC44LjguOCB2aWEgMTkyLjE2OC4yNS4xIGRldiBldGgwICBzcmMgMTkyLjE2OC4yNS4xMjQg
DQo+ICAgICAgICAgICAgY2FjaGUgIG10dSAxNTAwIGFkdm1zcyAxNDYwIGhvcGxpbWl0IDY0DQo+
DQo+SSBoYXZlIGJlZW4gcGxheWluZyB3aXRoIHRoaXMgYm94IGZvciBzZXZlcmFsIGRheXMsIGFu
ZCBubyBtYXR0ZXIgd2hhdCBJIGRvIChpbmNsdWRpbmcgcmVib290cykgaXQgd2FudHMgdG8gcm91
dGUgYWxtb3N0IGV2ZXJ5dGhpbmcgb3V0IGV0aDAgaW5zdGVhZCBvZiBldGgxLCBkZXNwaXRlIHRo
ZSBvcmRlcmluZyBvZiBkZWZhdWx0IHJvdXRlcyBzaG93biBhYm92ZSB3aGljaCBzaG91bGQgc2Vl
IGV0aDEgdGFraW5nIHByZWNlZGVuY2UuIE5vIGlwdGFibGVzIFBSRVJPVVRJTkcvbmF0L21hbmds
ZS9yYXcgc3R1ZmYsIHRoaXMgaXMgYWxsIHN0cmFpZ2h0IGlwcm91dGUyLg0KPg0KPkkgZGV0ZXJt
aW5lZCB0aGF0IHRoZSAnbWFpbicgdGFibGUgd2FzIHRoZSBvbmUgYXQgaXNzdWUgYnkgaW5zZXJ0
aW5nIGFuZCByZW1vdmluZyBhbiBvdmVycmlkaW5nIHJ1bGUgYXQgdmFyaW91cyBwcmlvcml0aWVz
IHRvIHNlZSB3aGVuICdpcCBnZXQnDQo+d291bGQgY2hhbmdlIGJlaGF2aW9yOg0KPiAgICAgICAg
IyBpcCBydWxlIHNob3cgfCB0YWlsDQo+ICAgICAgICAzMjc1ODoJZnJvbSBhbGwgdG8gMTkyLjE2
OC43Mi4wLzI0IGxvb2t1cCBkZWZyb3V0ZXMgDQo+ICAgICAgICAzMjc1OToJZnJvbSAxOTIuMTY4
LjcyLjAvMjQgbG9va3VwIGRlZnJvdXRlcyANCj4gICAgICAgIDMyNzYwOglmcm9tIDE5Mi4xNjgu
NzIuMC8yNCBsb29rdXAgbWd0cm91dGVzIA0KPiAgICAgICAgMzI3NjY6CWZyb20gYWxsIGxvb2t1
cCBtYWluIA0KPiAgICAgICAgMzI3Njc6CWZyb20gYWxsIGxvb2t1cCBkZWZhdWx0IA0KPiAgICAg
ICAgIyBpcCByb3V0ZSBhZGQgdGFibGUgY3VzdG9tIHRvIDguOC44LjAvMjQgdmlhIDE5Mi4xNjgu
NzIuMSBkZXYgZXRoMSBzcmMgMTkyLjE2OC43Mi4xMDANCj4gICAgICAgICMgZm9yIGkgaW4gJChz
ZXEgMzI3NjcgLTEgMzI3NjQpOyBkbyBpcCBydWxlIGFkZCBwcmlvICRpIHRvIDguOC44LjAvMjQg
bG9va3VwIGN1c3RvbTsgaXAgcm91dGUgZmx1c2ggY2FjaGU7IHNsZWVwIDI7IGVjaG8gLWVuICIk
aTpcdCI7IGlwIHJvdXRlIGdldCA4LjguOC44fCBoZWFkIC0xOyBpcCBydWxlIGRlbCBwcmlvICRp
IHRvIDguOC44LjAvMjQgbG9va3VwIGN1c3RvbTsgaXAgcm91dGUgZmx1c2ggY2FjaGU7IHNsZWVw
IDI7IGRvbmUgDQo+ICAgICAgICAzMjc2NzoJOC44LjguOCB2aWEgMTkyLjE2OC43Mi4xIGRldiBl
dGgwICBzcmMgMTkyLjE2OC43Mi4xMjQgDQo+ICAgICAgICAzMjc2NjoJOC44LjguOCB2aWEgMTky
LjE2OC43Mi4xIGRldiBldGgwICBzcmMgMTkyLjE2OC43Mi4xMjQgDQo+ICAgICAgICAzMjc2NToJ
OC44LjguOCB2aWEgMTkyLjE2OC43Mi4xIGRldiBldGgxICBzcmMgMTkyLjE2OC43Mi4xMDAgDQo+
ICAgICAgICAzMjc2NDoJOC44LjguOCB2aWEgMTkyLjE2OC43Mi4xIGRldiBldGgxICBzcmMgMTky
LjE2OC43Mi4xMDAgDQo+ICAgICAgICANCj5Cb3RoIGludGVyZmFjZXMgYXJlIHVwLCBhbmQgYXJl
ICphYmxlKiB0byByZWFjaCA4LjguOC44IHZpYSB0aGUgdXBzdHJlYW0NCj5ndzoNCj4gICAgICAg
ICMgcGluZyAtYyAxIC1JIGV0aDAgOC44LjguOCANCj4gICAgICAgIFBJTkcgOC44LjguOCAoOC44
LjguOCkgZnJvbSAxOTIuMTY4LjcyLjEyNCBldGgwOiA1Nig4NCkgYnl0ZXMgb2YgZGF0YS4NCj4g
ICAgICAgIDY0IGJ5dGVzIGZyb20gOC44LjguODogaWNtcF9zZXE9MSB0dGw9NDcgdGltZT0xNC45
IG1zDQo+ICAgICAgICANCj4gICAgICAgIC0tLSA4LjguOC44IHBpbmcgc3RhdGlzdGljcyAtLS0N
Cj4gICAgICAgIDEgcGFja2V0cyB0cmFuc21pdHRlZCwgMSByZWNlaXZlZCwgMCUgcGFja2V0IGxv
c3MsIHRpbWUgMG1zDQo+ICAgICAgICBydHQgbWluL2F2Zy9tYXgvbWRldiA9IDE0Ljk5MC8xNC45
OTAvMTQuOTkwLzAuMDAwIG1zDQo+ICAgICAgICAjIHBpbmcgLWMgMSAtSSBldGgxIDguOC44Ljgg
DQo+ICAgICAgICBQSU5HIDguOC44LjggKDguOC44LjgpIGZyb20gMTkyLjE2OC43Mi4xMDAgZXRo
MTogNTYoODQpIGJ5dGVzIG9mIGRhdGEuDQo+ICAgICAgICA2NCBieXRlcyBmcm9tIDguOC44Ljg6
IGljbXBfc2VxPTEgdHRsPTQ3IHRpbWU9MTQuOSBtcw0KPiAgICAgICAgDQo+ICAgICAgICAtLS0g
OC44LjguOCBwaW5nIHN0YXRpc3RpY3MgLS0tDQo+ICAgICAgICAxIHBhY2tldHMgdHJhbnNtaXR0
ZWQsIDEgcmVjZWl2ZWQsIDAlIHBhY2tldCBsb3NzLCB0aW1lIDBtcw0KPiAgICAgICAgcnR0IG1p
bi9hdmcvbWF4L21kZXYgPSAxNC45OTkvMTQuOTk5LzE0Ljk5OS8wLjAwMCBtcw0KPiAgICAgICAg
DQo+Q2FuIGFueW9uZSBoZWxwIG15IGZpZ3VyZSBvdXQgd2h5IHRoaXMgYm94IChhbG9uZSBvdXQg
b2YgbWFueSwgbWFueSBhcHBsaWFuY2VzIHdpdGggc2ltaWxhciBjb25maWd1cmF0aW9ucyBhdCB2
YXJpb3VzIGN1c3RvbWVyIHNpdGVzKSBpcyBkZXRlcm1pbmVkIHRvIHJlYWNoIG91dCB0aHJvdWdo
IGV0aDA/DQo+DQo+VGhlIGZ1bGwgUlBEQiBydWxlc2V0Og0KPiAgICAgICAgIyBpcCBydWxlIHNo
b3cgDQo+ICAgICAgICAwOglmcm9tIGFsbCBsb29rdXAgMjU1IA0KPiAgICAgICAgMTA6CWZyb20g
YWxsIGxvb2t1cCBib290c3RyYXAgDQo+ICAgICAgICAzMjczNjoJZnJvbSBhbGwgdG8gMTI4LjEx
OS40MC4xIGxvb2t1cCBtZ3Ryb3V0ZXMgDQo+ICAgICAgICAzMjczNzoJZnJvbSBhbGwgdG8gMTky
LjE2OC4xMjYuMjI4IGxvb2t1cCBtZ3Ryb3V0ZXMgDQo+ICAgICAgICAzMjczODoJZnJvbSBhbGwg
dG8gMTkyLjE2OC43Ni4yMzIgbG9va3VwIG1ndHJvdXRlcyANCj4gICAgICAgIDMyNzM5Oglmcm9t
IGFsbCB0byAxOTIuMTY4LjkwLjExMiBsb29rdXAgbWd0cm91dGVzIA0KPiAgICAgICAgMzI3NDA6
CWZyb20gYWxsIHRvIDE5Mi4xNjguNjEuMTEyIGxvb2t1cCBtZ3Ryb3V0ZXMgDQo+ICAgICAgICAz
Mjc0MToJZnJvbSBhbGwgdG8gMTkyLjE2OC43Ni4yMzIgbG9va3VwIG1ndHJvdXRlcyANCj4gICAg
ICAgIDMyNzQyOglmcm9tIGFsbCB0byAxOTIuMTY4LjYxLjExMiBsb29rdXAgbWd0cm91dGVzIA0K
PiAgICAgICAgMzI3NDM6CWZyb20gYWxsIHRvIDE5Mi4xNjguMzQuMzUgbG9va3VwIG1ndHJvdXRl
cyANCj4gICAgICAgIDMyNzQ0Oglmcm9tIGFsbCB0byAxOTIuMTY4LjYxLjExMiBsb29rdXAgZGVm
cm91dGVzIA0KPiAgICAgICAgMzI3NDU6CWZyb20gYWxsIHRvIDE5Mi4xNjguMTM0LjQ3IGxvb2t1
cCBtZ3Ryb3V0ZXMgDQo+ICAgICAgICAzMjc0NjoJZnJvbSBhbGwgdG8gMTkyLjE2OC4xMjcuNjgg
bG9va3VwIG1ndHJvdXRlcyANCj4gICAgICAgIDMyNzQ3Oglmcm9tIGFsbCB0byAxOTIuMTY4LjY2
LjYgbG9va3VwIG1ndHJvdXRlcyANCj4gICAgICAgIDMyNzQ4Oglmcm9tIGFsbCB0byAxOTIuMTY4
LjEyNi4yMjggbG9va3VwIG1ndHJvdXRlcyANCj4gICAgICAgIDMyNzQ5Oglmcm9tIGFsbCB0byAx
OTIuMTY4LjEyNy42OCBsb29rdXAgbWd0cm91dGVzIA0KPiAgICAgICAgMzI3NTA6CWZyb20gYWxs
IHRvIDE5Mi4xNjguMTM0LjQxIGxvb2t1cCBtZ3Ryb3V0ZXMgDQo+ICAgICAgICAzMjc1MToJZnJv
bSBhbGwgdG8gMTkyLjE2OC4xMzQuNDEgbG9va3VwIG1ndHJvdXRlcyANCj4gICAgICAgIDMyNzUy
Oglmcm9tIGFsbCB0byAxOTIuMTY4Ljc2LjIzMiBsb29rdXAgbWd0cm91dGVzIA0KPiAgICAgICAg
MzI3NTM6CWZyb20gYWxsIHRvIDEwNy4yMy4xNS4xNzUgbG9va3VwIG1ndHJvdXRlcyANCj4gICAg
ICAgIDMyNzU0Oglmcm9tIGFsbCB0byAyMTYuODcuNjkuOTQgbG9va3VwIG1ndHJvdXRlcyANCj4g
ICAgICAgIDMyNzU1Oglmcm9tIDE5Mi4xNjguNzIuMTI0IGxvb2t1cCBtZ3Ryb3V0ZXMgDQo+ICAg
ICAgICAzMjc1NjoJZnJvbSAxOTIuMTY4LjcyLjEwMCBsb29rdXAgZGVmcm91dGVzIA0KPiAgICAg
ICAgMzI3NTc6CWZyb20gMTkyLjE2OC43Mi4wLzI0IHRvIDE5Mi4xNjguNzIuMC8yNCBsb29rdXAg
bWd0cm91dGVzIA0KPiAgICAgICAgMzI3NTg6CWZyb20gYWxsIHRvIDE5Mi4xNjguNzIuMC8yNCBs
b29rdXAgZGVmcm91dGVzIA0KPiAgICAgICAgMzI3NTk6CWZyb20gMTkyLjE2OC43Mi4wLzI0IGxv
b2t1cCBkZWZyb3V0ZXMgDQo+ICAgICAgICAzMjc2MDoJZnJvbSAxOTIuMTY4LjcyLjAvMjQgbG9v
a3VwIG1ndHJvdXRlcyANCj4gICAgICAgIDMyNzY2Oglmcm9tIGFsbCBsb29rdXAgbWFpbiANCj4g
ICAgICAgIDMyNzY3Oglmcm9tIGFsbCBsb29rdXAgZGVmYXVsdCANCj4gICAgICAgIA0KPg0KPg0K
PglUaGFuayB5b3UgZm9yIGFueSBjbHVlIHlvdSBjYW4gc3BhcmUsDQo+CQlPbGUNCj4tLQ0KPk9s
ZSBDcmFpZyA8b2xjQG1hY21pbGxhbi1jcmFpZy5uZXQ+DQo+DQo+LS0NCj5UbyB1bnN1YnNjcmli
ZSBmcm9tIHRoaXMgbGlzdDogc2VuZCB0aGUgbGluZSAidW5zdWJzY3JpYmUgbGFydGMiIGluIHRo
ZSBib2R5IG9mIGEgbWVzc2FnZSB0byBtYWpvcmRvbW9Admdlci5rZXJuZWwub3JnIE1vcmUgbWFq
b3Jkb21vIGluZm8gYXQgIGh0dHA6Ly92Z2VyLmtlcm5lbC5vcmcvbWFqb3Jkb21vLWluZm8uaHRt
bA0K
^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: iproute2 does not select 1st default route in table?
2014-04-16 11:34 iproute2 does not select 1st default route in table? Ole Craig
` (2 preceding siblings ...)
2014-04-16 19:51 ` Joel Gerber
@ 2014-05-09 20:13 ` Ole Craig
2014-05-12 11:52 ` Joel Gerber
` (6 subsequent siblings)
10 siblings, 0 replies; 12+ messages in thread
From: Ole Craig @ 2014-05-09 20:13 UTC (permalink / raw)
To: lartc
Joel, et al -
TL;DR: behavior at issue differs between 2 boxes which are 1 IP
address apart with identical hw/sw loads; same kernel; interface
numbering unchanged after kernel probing. What gives? What am I
missing?
(Apologies for the delayed response, life around here has been frantic
and this has been sitting around half-composed in my mail client.)
Details:
Ok, I have two dual-interface boxes sitting next to each other on
this customer's network. The first box is the one we've been discussing,
I'll call him "Deviant" from now on. The second box (hereinafter "Norm")
is acting just like the rest of the appliances in our fleet, i.e.
routing out eth1 by default. Hoping that comparing these two (which are
identical WRT both hardware and software config*) can lead to a more
informed/precise conclusion as to what's causing them to behave
differently (and maybe some ideas for re-norming Deviant; arbitrary
routing is Not My Kink.:)
kernel insertion order on Deviant:
[root@dvnt ~]# uname -a
Linux dvnt.example.com 2.6.18-348.4.1.el5 #1 SMP Tue Apr 16 15:40:06 EDT 2013 x86_64 x86_64 x86_64 GNU/Linux
[root@dvnt ~]# dmesg | egrep 'eth.: \('
igb 0000:01:00.0: eth0: (PCIe:2.5Gb/s:Width x4)
00:25:90:30:28:6c
igb 0000:01:00.1: eth1: (PCIe:2.5Gb/s:Width x4)
00:25:90:30:28:6d
device<-->address mapping on Deviant:
[root@dvnt ~]# ip link show
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 16436 qdisc noqueue
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc
pfifo_fast qlen 1000
link/ether 00:25:90:30:28:6c brd ff:ff:ff:ff:ff:ff
3: eth1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc
pfifo_fast qlen 1000
link/ether 00:25:90:30:28:6d brd ff:ff:ff:ff:ff:ff
Link status on Deviant:
[root@dvnt ~]# for i in 0 1; do echo -n "eth$i: "; ethtool eth$i | grep Link; done
eth0: Link detected: yes
eth1: Link detected: yes
kernel insertion order on Norm:
[root@norm ~]# uname -a
Linux norm.example.com 2.6.18-348.4.1.el5 #1 SMP Tue Apr 16 15:40:06 EDT 2013 x86_64 x86_64 x86_64 GNU/Linux
[root@norm ~]# dmesg | egrep 'eth.: \('
igb 0000:01:00.0: eth0: (PCIe:2.5Gb/s:Width x4) 00:25:90:30:2c:f8
igb 0000:01:00.1: eth1: (PCIe:2.5Gb/s:Width x4) 00:25:90:30:2c:f9
device<-->address map on Norm:
[root@norm ~]# ip link show
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 16436 qdisc noqueue
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast qlen 1000
link/ether 00:25:90:30:2c:f8 brd ff:ff:ff:ff:ff:ff
3: eth1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast qlen 1000
link/ether 00:25:90:30:2c:f9 brd ff:ff:ff:ff:ff:ff
Link status on Norm:
[root@norm ~]# for i in 0 1; do echo -n "eth$i: "; ethtool eth$i | grep Link; done
eth0: Link detected: yes
eth1: Link detected: yes
So, we can see that in both cases the device ordering is unchanged from
that which was discovered at boot by the kernel, and that eth0 was
probed first.
And here again for posterity is the active routing table and results of
"ip route get" on each machine:
Deviant:
[root@dvnt ~]# ip route show table main
10.1.1.1 dev tun0 proto kernel scope link src 10.1.1.7
10.250.32.1 via 10.1.1.1 dev tun0
10.250.10.0/24 via 10.1.1.1 dev tun0
192.168.72.0/24 dev eth0 proto kernel scope link src 192.168.72.124
192.168.72.0/24 dev eth1 proto kernel scope link src 192.168.72.100
default via 192.168.72.1 dev eth1
default via 192.168.72.1 dev eth0
[root@dvnt ~]# ip route get 8.8.8.8 | sanize
8.8.8.8 via 192.168.72.1 dev eth0 src 192.168.72.124
cache mtu 1500 advmss 1460 hoplimit 64
Norm:
[root@norm ~]# ip route show table main
10.1.1.1 dev tun0 proto kernel scope link src 10.1.1.45
10.250.32.1 via 10.1.1.1 dev tun0
10.250.10.0/24 via 10.1.1.1 dev tun0
192.168.72.0/24 dev eth0 proto kernel scope link src 192.168.72.123
192.168.72.0/24 dev eth1 proto kernel scope link src 192.168.72.99
default via 192.168.72.1 dev eth1
default via 192.168.72.1 dev eth0
[root@norm ~]# ip route get 8.8.8.8
8.8.8.8 via 192.168.72.1 dev eth1 src 192.168.72.99
cache mtu 1500 advmss 1460 hoplimit 64
Any thoughts as to what else might be going on?
Ole
*"identical[...]hw/sw config" -- granted there are differences in
application configuration (layers 5-7) but nothing that should come
close to affecting routing.
--
Ole Craig <olc@macmillan-craig.net>
On Wed, 2014-04-16 at 16:51 -0300, Joel Gerber wrote:
> Are you running different versions of the Linux kernel?
>
> I'm quite certain that the order the routes are added should have no weight on this matter. There is also another possibility. You might be renaming the interfaces differently that the order that they are loaded into the kernel as. Whichever interface was loaded first will have the smaller internal number, which is the one that would get selected first.
>
> Joel Gerber
> Network Specialist
> Network Operations
> Eastlink
> E: Joel.Gerber@corp.eastlink.ca T: 519.786.1241
>
> -----Original Message-----
> From: Ole Craig [mailto:olc@macmillan-craig.net]
> Sent: April-16-14 11:08 AM
> To: Joel Gerber
> Cc: lartc@vger.kernel.org
> Subject: RE: iproute2 does not select 1st default route in table?
>
> Hello Joel,
> There must be something else in play; we manage hundreds of other similar appliances and this is the only one that's exhibiting this behavior. ("similar" = "same hardware spec, same software spec, only the IPs are different" -- and yes, most of them have eth0 and eth1 sharing a subnet and gw, and eth1 is always the default route for packets not built with a specific source IP.)
>
> Thanks,
> Ole
>
> Joel Gerber <Joel.Gerber@corp.eastlink.ca> wrote:
>
> >Hello Ole;
> >
> >If you have multiple routes set with the same metric to the same destination, by default, the Linux kernel will choose the lowest numbered interface to use. This would be why eth0 is being hit every time. It has nothing to do with your ip rule definitions. If you wanted to prefer eth1, add a larger metric flag to the eth0 route, which will cause eth1 to be used instead. Then, only in the event that eth1 is link-down, will eth0 be used.
> >
> >You could also setup ECMP (Equal Cost Multi Path) which would allow you to load-balance traffic across both interfaces. To do this, add the equalize option to your 2 default routes when adding them. You might need to verify that you have multipath support baked into your kernel first.
> >
> >Joel Gerber
> >Network Specialist
> >Network Operations
> >Eastlink
> >E: Joel.Gerber@corp.eastlink.ca T: 519.786.1241
> >
> >-----Original Message-----
> >From: lartc-owner@vger.kernel.org [mailto:lartc-owner@vger.kernel.org] On Behalf Of Ole Craig
> >Sent: April-16-14 7:34 AM
> >To: lartc@vger.kernel.org
> >Subject: iproute2 does not select 1st default route in table?
> >
> >I am having the damnedest time with a dual-IP CentOS5-based appliance which seems to defy its iproute2 configuration, and I'm here hoping someone smarter than me (admittedly not a high bar) might be so kind as to tell me what I'm missing:
> > # ip route show table main
> > 10.1.1.1 dev tun0 proto kernel scope link src 10.1.1.7
> > 10.250.32.1 via 10.1.1.1 dev tun0
> > 10.250.10.0/24 via 10.1.1.1 dev tun0
> > 192.168.25.0/24 dev eth0 proto kernel scope link src 192.168.25.124
> > 192.168.25.0/24 dev eth1 proto kernel scope link src 192.168.25.100
> > default via 192.168.25.1 dev eth1
> > default via 192.168.25.1 dev eth0
> > # ip route get 8.8.8.8
> > 8.8.8.8 via 192.168.25.1 dev eth0 src 192.168.25.124
> > cache mtu 1500 advmss 1460 hoplimit 64
> >
> >I have been playing with this box for several days, and no matter what I do (including reboots) it wants to route almost everything out eth0 instead of eth1, despite the ordering of default routes shown above which should see eth1 taking precedence. No iptables PREROUTING/nat/mangle/raw stuff, this is all straight iproute2.
> >
> >I determined that the 'main' table was the one at issue by inserting and removing an overriding rule at various priorities to see when 'ip get'
> >would change behavior:
> > # ip rule show | tail
> > 32758: from all to 192.168.72.0/24 lookup defroutes
> > 32759: from 192.168.72.0/24 lookup defroutes
> > 32760: from 192.168.72.0/24 lookup mgtroutes
> > 32766: from all lookup main
> > 32767: from all lookup default
> > # ip route add table custom to 8.8.8.0/24 via 192.168.72.1 dev eth1 src 192.168.72.100
> > # for i in $(seq 32767 -1 32764); do ip rule add prio $i to 8.8.8.0/24 lookup custom; ip route flush cache; sleep 2; echo -en "$i:\t"; ip route get 8.8.8.8| head -1; ip rule del prio $i to 8.8.8.0/24 lookup custom; ip route flush cache; sleep 2; done
> > 32767: 8.8.8.8 via 192.168.72.1 dev eth0 src 192.168.72.124
> > 32766: 8.8.8.8 via 192.168.72.1 dev eth0 src 192.168.72.124
> > 32765: 8.8.8.8 via 192.168.72.1 dev eth1 src 192.168.72.100
> > 32764: 8.8.8.8 via 192.168.72.1 dev eth1 src 192.168.72.100
> >
> >Both interfaces are up, and are *able* to reach 8.8.8.8 via the upstream
> >gw:
> > # ping -c 1 -I eth0 8.8.8.8
> > PING 8.8.8.8 (8.8.8.8) from 192.168.72.124 eth0: 56(84) bytes of data.
> > 64 bytes from 8.8.8.8: icmp_seq=1 ttlG time\x14.9 ms
> >
> > --- 8.8.8.8 ping statistics ---
> > 1 packets transmitted, 1 received, 0% packet loss, time 0ms
> > rtt min/avg/max/mdev = 14.990/14.990/14.990/0.000 ms
> > # ping -c 1 -I eth1 8.8.8.8
> > PING 8.8.8.8 (8.8.8.8) from 192.168.72.100 eth1: 56(84) bytes of data.
> > 64 bytes from 8.8.8.8: icmp_seq=1 ttlG time\x14.9 ms
> >
> > --- 8.8.8.8 ping statistics ---
> > 1 packets transmitted, 1 received, 0% packet loss, time 0ms
> > rtt min/avg/max/mdev = 14.999/14.999/14.999/0.000 ms
> >
> >Can anyone help my figure out why this box (alone out of many, many appliances with similar configurations at various customer sites) is determined to reach out through eth0?
> >
> >The full RPDB ruleset:
> > # ip rule show
> > 0: from all lookup 255
> > 10: from all lookup bootstrap
> > 32736: from all to 128.119.40.1 lookup mgtroutes
> > 32737: from all to 192.168.126.228 lookup mgtroutes
> > 32738: from all to 192.168.76.232 lookup mgtroutes
> > 32739: from all to 192.168.90.112 lookup mgtroutes
> > 32740: from all to 192.168.61.112 lookup mgtroutes
> > 32741: from all to 192.168.76.232 lookup mgtroutes
> > 32742: from all to 192.168.61.112 lookup mgtroutes
> > 32743: from all to 192.168.34.35 lookup mgtroutes
> > 32744: from all to 192.168.61.112 lookup defroutes
> > 32745: from all to 192.168.134.47 lookup mgtroutes
> > 32746: from all to 192.168.127.68 lookup mgtroutes
> > 32747: from all to 192.168.66.6 lookup mgtroutes
> > 32748: from all to 192.168.126.228 lookup mgtroutes
> > 32749: from all to 192.168.127.68 lookup mgtroutes
> > 32750: from all to 192.168.134.41 lookup mgtroutes
> > 32751: from all to 192.168.134.41 lookup mgtroutes
> > 32752: from all to 192.168.76.232 lookup mgtroutes
> > 32753: from all to 107.23.15.175 lookup mgtroutes
> > 32754: from all to 216.87.69.94 lookup mgtroutes
> > 32755: from 192.168.72.124 lookup mgtroutes
> > 32756: from 192.168.72.100 lookup defroutes
> > 32757: from 192.168.72.0/24 to 192.168.72.0/24 lookup mgtroutes
> > 32758: from all to 192.168.72.0/24 lookup defroutes
> > 32759: from 192.168.72.0/24 lookup defroutes
> > 32760: from 192.168.72.0/24 lookup mgtroutes
> > 32766: from all lookup main
> > 32767: from all lookup default
> >
> >
> >
> > Thank you for any clue you can spare,
> > Ole
> >--
> >Ole Craig <olc@macmillan-craig.net>
> >
> >--
> >To unsubscribe from this list: send the line "unsubscribe lartc" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
> {.n++%ݶ\x17w{.n+j\)w*\x1fjg\x1eݢj\aG\fj:+vwjm\x1e\x1ewfh٥
^ permalink raw reply [flat|nested] 12+ messages in thread
* RE: iproute2 does not select 1st default route in table?
2014-04-16 11:34 iproute2 does not select 1st default route in table? Ole Craig
` (3 preceding siblings ...)
2014-05-09 20:13 ` Ole Craig
@ 2014-05-12 11:52 ` Joel Gerber
2014-05-12 20:05 ` Anton Danilov
` (5 subsequent siblings)
10 siblings, 0 replies; 12+ messages in thread
From: Joel Gerber @ 2014-05-12 11:52 UTC (permalink / raw)
To: lartc
SSdtIGdldHRpbmcgY29uZnVzZWQgbm93LiBJIGRpZCBzb21lIG9ubGluZSByZWFkaW5nLCBhbmQg
SSd2ZSBmb3VuZCB0aGUgZm9sbG93aW5nOg0KDQpJZiBzZXZlcmFsIHJvdXRlcyBtYXRjaCB0aGUg
cGFja2V0LCB0aGUgZm9sbG93aW5nIHBydW5pbmcgcnVsZXMgYXJlIHVzZWQgdG8gc2VsZWN0IHRo
ZSBiZXN0IG9uZToNCg0KICAgMS4gVGhlIGxvbmdlc3QgbWF0Y2hpbmcgcHJlZml4IGlzIHNlbGVj
dGVkOyBhbGwgc2hvcnRlciBvbmVzIGFyZSBkcm9wcGVkLg0KICAgMi4gSWYgdGhlIFRPUyBvZiBz
b21lIHJvdXRlIHdpdGggdGhlIGxvbmdlc3QgcHJlZml4IGlzIGVxdWFsIHRvIHRoZSBUT1Mgb2Yg
dGhlIHBhY2tldCwgcm91dGVzIHdpdGggZGlmZmVyZW50IFRPUyBhcmUgZHJvcHBlZC4NCiAgIDMu
IElmIG5vIGV4YWN0IFRPUyBtYXRjaCBpcyBmb3VuZCBhbmQgcm91dGVzIHdpdGggVE9TPTAgZXhp
c3QsIHRoZSByZXN0IG9mIHRoZSByb3V0ZXMgYXJlIHBydW5lZC4gT3RoZXJ3aXNlIHRoZSByb3V0
ZSBsb29rdXAgZmFpbHMuDQogICA0LiBJZiBzZXZlcmFsIHJvdXRlcyByZW1haW4gYWZ0ZXIgc3Rl
cHMgMS0zIGhhdmUgYmVlbiB0cmllZCwgdGhlbiByb3V0ZXMgd2l0aCB0aGUgYmVzdCBwcmVmZXJl
bmNlIHZhbHVlIGFyZSBzZWxlY3RlZC4NCiAgIDUuIElmIHNldmVyYWwgcm91dGVzIHN0aWxsIGV4
aXN0LCB0aGVuIHRoZSBmaXJzdCBvZiB0aGVtIGlzIHNlbGVjdGVkLg0KDQpodHRwOi8vd3d3LnNv
ZnRwYW5vcmFtYS5vcmcvTmV0L0ludGVybmV0X2xheWVyL1JvdXRpbmcvcG9saWN5X3JvdXRpbmcu
c2h0bWwNCg0KSSdtIGhhdmluZyBhIGhhcmQgdGltZSBmaW5kaW5nIGFueXRoaW5nIG1vcmUgb2Zm
aWNpYWwgdGhhdCBzdGF0ZXMgdGhpcywgYW5kIHdpdGhvdXQgbG9va2luZyBhdCB0aGUga2VybmVs
IHNvdXJjZSBjb2RlIEkgY2FuJ3QgYmUgMTAwJSBjZXJ0YWluLCBidXQgaXQgc2VlbXMgdGhhdCB0
aGUgZmlyc3Qgcm91dGUgbGlzdGVkIHNob3VsZCBiZSBzZWxlY3RlZCwgd2hlbiB0aGVyZSBhcmUg
bXVsdGlwbGUgbWF0Y2hlcy4NCg0KSGVyZSdzIHNvbWV0aGluZyBlbHNlIHRvIHRyeSwgcnVuIHRo
ZSBjb21tYW5kICJpcCByb3V0ZSBzaG93IGNhY2hlIiBhbmQgcGFzdGUgdGhlIGNvbnRlbnRzIGhl
cmUuIEFzIHRoZSBjYWNoZSBpcyB0aGUgZmlyc3QgdGhpbmcgcXVlcmllZCBiZWZvcmUgbG9va2lu
ZyBhdCB5b3VyIHJvdXRpbmcgbGlzdCwgSSdtIGN1cmlvdXMgdG8gc2VlIHdoYXQgaXQgc2hvd3Mu
DQoNCkpvZWwgR2VyYmVyDQpOZXR3b3JrIFNwZWNpYWxpc3QNCk5ldHdvcmsgT3BlcmF0aW9ucw0K
RWFzdGxpbmsNCkU6IEpvZWwuR2VyYmVyQGNvcnAuZWFzdGxpbmsuY2EgVDogNTE5Ljc4Ni4xMjQx
DQotLS0tLU9yaWdpbmFsIE1lc3NhZ2UtLS0tLQ0KRnJvbTogT2xlIENyYWlnIFttYWlsdG86b2xj
QG1hY21pbGxhbi1jcmFpZy5uZXRdDQpTZW50OiBNYXktMDktMTQgNDoxNCBQTQ0KVG86IEpvZWwg
R2VyYmVyDQpDYzogbGFydGNAdmdlci5rZXJuZWwub3JnDQpTdWJqZWN0OiBSZTogaXByb3V0ZTIg
ZG9lcyBub3Qgc2VsZWN0IDFzdCBkZWZhdWx0IHJvdXRlIGluIHRhYmxlPw0KDQpKb2VsLCBldCBh
bCAtDQogICAgICAgIFRMO0RSOiBiZWhhdmlvciBhdCBpc3N1ZSBkaWZmZXJzIGJldHdlZW4gMiBi
b3hlcyB3aGljaCBhcmUgMSBJUA0KICAgICAgICBhZGRyZXNzIGFwYXJ0IHdpdGggaWRlbnRpY2Fs
IGh3L3N3IGxvYWRzOyBzYW1lIGtlcm5lbDsgaW50ZXJmYWNlDQogICAgICAgIG51bWJlcmluZyB1
bmNoYW5nZWQgYWZ0ZXIga2VybmVsIHByb2JpbmcuIFdoYXQgZ2l2ZXM/IFdoYXQgYW0gSQ0KICAg
ICAgICBtaXNzaW5nPw0KDQooQXBvbG9naWVzIGZvciB0aGUgZGVsYXllZCByZXNwb25zZSwgbGlm
ZSBhcm91bmQgaGVyZSBoYXMgYmVlbiBmcmFudGljDQphbmQgdGhpcyBoYXMgYmVlbiBzaXR0aW5n
IGFyb3VuZCBoYWxmLWNvbXBvc2VkIGluIG15IG1haWwgY2xpZW50LikNCg0KRGV0YWlsczoNCiAg
ICBPaywgSSBoYXZlIHR3byBkdWFsLWludGVyZmFjZSBib3hlcyBzaXR0aW5nIG5leHQgdG8gZWFj
aCBvdGhlciBvbg0KdGhpcyBjdXN0b21lcidzIG5ldHdvcmsuIFRoZSBmaXJzdCBib3ggaXMgdGhl
IG9uZSB3ZSd2ZSBiZWVuIGRpc2N1c3NpbmcsDQpJJ2xsIGNhbGwgaGltICJEZXZpYW50IiBmcm9t
IG5vdyBvbi4gVGhlIHNlY29uZCBib3ggKGhlcmVpbmFmdGVyICJOb3JtIikNCmlzIGFjdGluZyBq
dXN0IGxpa2UgdGhlIHJlc3Qgb2YgdGhlIGFwcGxpYW5jZXMgaW4gb3VyIGZsZWV0LCBpLmUuDQpy
b3V0aW5nIG91dCBldGgxIGJ5IGRlZmF1bHQuIEhvcGluZyB0aGF0IGNvbXBhcmluZyB0aGVzZSB0
d28gKHdoaWNoIGFyZQ0KaWRlbnRpY2FsIFdSVCBib3RoIGhhcmR3YXJlIGFuZCBzb2Z0d2FyZSBj
b25maWcqKSBjYW4gbGVhZCB0byBhIG1vcmUNCmluZm9ybWVkL3ByZWNpc2UgY29uY2x1c2lvbiBh
cyB0byB3aGF0J3MgY2F1c2luZyB0aGVtIHRvIGJlaGF2ZQ0KZGlmZmVyZW50bHkgKGFuZCBtYXli
ZSBzb21lIGlkZWFzIGZvciByZS1ub3JtaW5nIERldmlhbnQ7IGFyYml0cmFyeQ0Kcm91dGluZyBp
cyBOb3QgTXkgS2luay46KQ0KDQprZXJuZWwgaW5zZXJ0aW9uIG9yZGVyIG9uIERldmlhbnQ6DQog
ICAgICAgIFtyb290QGR2bnQgfl0jIHVuYW1lIC1hDQogICAgICAgIExpbnV4IGR2bnQuZXhhbXBs
ZS5jb20gMi42LjE4LTM0OC40LjEuZWw1ICMxIFNNUCBUdWUgQXByIDE2IDE1OjQwOjA2IEVEVCAy
MDEzIHg4Nl82NCB4ODZfNjQgeDg2XzY0IEdOVS9MaW51eA0KICAgICAgICBbcm9vdEBkdm50IH5d
IyBkbWVzZyB8IGVncmVwICdldGguOiBcKCcNCiAgICAgICAgaWdiIDAwMDA6MDE6MDAuMDogZXRo
MDogKFBDSWU6Mi41R2IvczpXaWR0aCB4NCkNCiAgICAgICAgMDA6MjU6OTA6MzA6Mjg6NmMNCiAg
ICAgICAgaWdiIDAwMDA6MDE6MDAuMTogZXRoMTogKFBDSWU6Mi41R2IvczpXaWR0aCB4NCkNCiAg
ICAgICAgMDA6MjU6OTA6MzA6Mjg6NmQNCmRldmljZTwtLT5hZGRyZXNzIG1hcHBpbmcgb24gRGV2
aWFudDoNCiAgICAgICAgW3Jvb3RAZHZudCB+XSMgaXAgbGluayBzaG93DQogICAgICAgIDE6IGxv
OiA8TE9PUEJBQ0ssVVAsTE9XRVJfVVA+IG10dSAxNjQzNiBxZGlzYyBub3F1ZXVlDQogICAgICAg
ICAgICBsaW5rL2xvb3BiYWNrIDAwOjAwOjAwOjAwOjAwOjAwIGJyZCAwMDowMDowMDowMDowMDow
MA0KICAgICAgICAyOiBldGgwOiA8QlJPQURDQVNULE1VTFRJQ0FTVCxVUCxMT1dFUl9VUD4gbXR1
IDE1MDAgcWRpc2MNCiAgICAgICAgcGZpZm9fZmFzdCBxbGVuIDEwMDANCiAgICAgICAgICAgIGxp
bmsvZXRoZXIgMDA6MjU6OTA6MzA6Mjg6NmMgYnJkIGZmOmZmOmZmOmZmOmZmOmZmDQogICAgICAg
IDM6IGV0aDE6IDxCUk9BRENBU1QsTVVMVElDQVNULFVQLExPV0VSX1VQPiBtdHUgMTUwMCBxZGlz
Yw0KICAgICAgICBwZmlmb19mYXN0IHFsZW4gMTAwMA0KICAgICAgICAgICAgbGluay9ldGhlciAw
MDoyNTo5MDozMDoyODo2ZCBicmQgZmY6ZmY6ZmY6ZmY6ZmY6ZmYNCkxpbmsgc3RhdHVzIG9uIERl
dmlhbnQ6DQogICAgICAgIFtyb290QGR2bnQgfl0jIGZvciBpIGluIDAgMTsgZG8gZWNobyAtbiAi
ZXRoJGk6ICI7IGV0aHRvb2wgZXRoJGkgfCBncmVwIExpbms7IGRvbmUNCiAgICAgICAgZXRoMDog
ICBMaW5rIGRldGVjdGVkOiB5ZXMNCiAgICAgICAgZXRoMTogICBMaW5rIGRldGVjdGVkOiB5ZXMN
Cg0KDQprZXJuZWwgaW5zZXJ0aW9uIG9yZGVyIG9uIE5vcm06DQogICAgICAgIFtyb290QG5vcm0g
fl0jIHVuYW1lIC1hDQogICAgICAgIExpbnV4IG5vcm0uZXhhbXBsZS5jb20gMi42LjE4LTM0OC40
LjEuZWw1ICMxIFNNUCBUdWUgQXByIDE2IDE1OjQwOjA2IEVEVCAyMDEzIHg4Nl82NCB4ODZfNjQg
eDg2XzY0IEdOVS9MaW51eA0KICAgICAgICBbcm9vdEBub3JtIH5dIyBkbWVzZyB8IGVncmVwICdl
dGguOiBcKCcNCiAgICAgICAgaWdiIDAwMDA6MDE6MDAuMDogZXRoMDogKFBDSWU6Mi41R2IvczpX
aWR0aCB4NCkgMDA6MjU6OTA6MzA6MmM6ZjgNCiAgICAgICAgaWdiIDAwMDA6MDE6MDAuMTogZXRo
MTogKFBDSWU6Mi41R2IvczpXaWR0aCB4NCkgMDA6MjU6OTA6MzA6MmM6ZjkNCmRldmljZTwtLT5h
ZGRyZXNzIG1hcCBvbiBOb3JtOg0KICAgICAgICBbcm9vdEBub3JtIH5dIyBpcCBsaW5rIHNob3cN
CiAgICAgICAgMTogbG86IDxMT09QQkFDSyxVUCxMT1dFUl9VUD4gbXR1IDE2NDM2IHFkaXNjIG5v
cXVldWUNCiAgICAgICAgICAgIGxpbmsvbG9vcGJhY2sgMDA6MDA6MDA6MDA6MDA6MDAgYnJkIDAw
OjAwOjAwOjAwOjAwOjAwDQogICAgICAgIDI6IGV0aDA6IDxCUk9BRENBU1QsTVVMVElDQVNULFVQ
LExPV0VSX1VQPiBtdHUgMTUwMCBxZGlzYyBwZmlmb19mYXN0IHFsZW4gMTAwMA0KICAgICAgICAg
ICAgbGluay9ldGhlciAwMDoyNTo5MDozMDoyYzpmOCBicmQgZmY6ZmY6ZmY6ZmY6ZmY6ZmYNCiAg
ICAgICAgMzogZXRoMTogPEJST0FEQ0FTVCxNVUxUSUNBU1QsVVAsTE9XRVJfVVA+IG10dSAxNTAw
IHFkaXNjIHBmaWZvX2Zhc3QgcWxlbiAxMDAwDQogICAgICAgICAgICBsaW5rL2V0aGVyIDAwOjI1
OjkwOjMwOjJjOmY5IGJyZCBmZjpmZjpmZjpmZjpmZjpmZg0KTGluayBzdGF0dXMgb24gTm9ybToN
CiAgICAgICAgW3Jvb3RAbm9ybSB+XSMgZm9yIGkgaW4gMCAxOyBkbyBlY2hvIC1uICJldGgkaTog
IjsgZXRodG9vbCBldGgkaSB8IGdyZXAgTGluazsgZG9uZQ0KICAgICAgICBldGgwOiAgIExpbmsg
ZGV0ZWN0ZWQ6IHllcw0KICAgICAgICBldGgxOiAgIExpbmsgZGV0ZWN0ZWQ6IHllcw0KDQoNClNv
LCB3ZSBjYW4gc2VlIHRoYXQgaW4gYm90aCBjYXNlcyB0aGUgZGV2aWNlIG9yZGVyaW5nIGlzIHVu
Y2hhbmdlZCBmcm9tDQp0aGF0IHdoaWNoIHdhcyBkaXNjb3ZlcmVkIGF0IGJvb3QgYnkgdGhlIGtl
cm5lbCwgYW5kIHRoYXQgZXRoMCB3YXMNCnByb2JlZCBmaXJzdC4NCg0KQW5kIGhlcmUgYWdhaW4g
Zm9yIHBvc3Rlcml0eSBpcyB0aGUgYWN0aXZlIHJvdXRpbmcgdGFibGUgYW5kIHJlc3VsdHMgb2YN
CiJpcCByb3V0ZSBnZXQiIG9uIGVhY2ggbWFjaGluZToNCg0KRGV2aWFudDoNCiAgICAgICAgW3Jv
b3RAZHZudCB+XSMgaXAgcm91dGUgc2hvdyB0YWJsZSBtYWluDQogICAgICAgIDEwLjEuMS4xIGRl
diB0dW4wICBwcm90byBrZXJuZWwgIHNjb3BlIGxpbmsgIHNyYyAxMC4xLjEuNw0KICAgICAgICAx
MC4yNTAuMzIuMSB2aWEgMTAuMS4xLjEgZGV2IHR1bjANCiAgICAgICAgMTAuMjUwLjEwLjAvMjQg
dmlhIDEwLjEuMS4xIGRldiB0dW4wDQogICAgICAgIDE5Mi4xNjguNzIuMC8yNCBkZXYgZXRoMCAg
cHJvdG8ga2VybmVsICBzY29wZSBsaW5rICBzcmMgMTkyLjE2OC43Mi4xMjQNCiAgICAgICAgMTky
LjE2OC43Mi4wLzI0IGRldiBldGgxICBwcm90byBrZXJuZWwgIHNjb3BlIGxpbmsgIHNyYyAxOTIu
MTY4LjcyLjEwMA0KICAgICAgICBkZWZhdWx0IHZpYSAxOTIuMTY4LjcyLjEgZGV2IGV0aDENCiAg
ICAgICAgZGVmYXVsdCB2aWEgMTkyLjE2OC43Mi4xIGRldiBldGgwDQogICAgICAgIFtyb290QGR2
bnQgfl0jIGlwIHJvdXRlIGdldCA4LjguOC44IHwgc2FuaXplDQogICAgICAgIDguOC44Ljggdmlh
IDE5Mi4xNjguNzIuMSBkZXYgZXRoMCAgc3JjIDE5Mi4xNjguNzIuMTI0DQogICAgICAgICAgICBj
YWNoZSAgbXR1IDE1MDAgYWR2bXNzIDE0NjAgaG9wbGltaXQgNjQNCg0KTm9ybToNCiAgICAgICAg
W3Jvb3RAbm9ybSB+XSMgaXAgcm91dGUgc2hvdyB0YWJsZSBtYWluDQogICAgICAgIDEwLjEuMS4x
IGRldiB0dW4wICBwcm90byBrZXJuZWwgIHNjb3BlIGxpbmsgIHNyYyAxMC4xLjEuNDUNCiAgICAg
ICAgMTAuMjUwLjMyLjEgdmlhIDEwLjEuMS4xIGRldiB0dW4wDQogICAgICAgIDEwLjI1MC4xMC4w
LzI0IHZpYSAxMC4xLjEuMSBkZXYgdHVuMA0KICAgICAgICAxOTIuMTY4LjcyLjAvMjQgZGV2IGV0
aDAgIHByb3RvIGtlcm5lbCAgc2NvcGUgbGluayAgc3JjIDE5Mi4xNjguNzIuMTIzDQogICAgICAg
IDE5Mi4xNjguNzIuMC8yNCBkZXYgZXRoMSAgcHJvdG8ga2VybmVsICBzY29wZSBsaW5rICBzcmMg
MTkyLjE2OC43Mi45OQ0KICAgICAgICBkZWZhdWx0IHZpYSAxOTIuMTY4LjcyLjEgZGV2IGV0aDEN
CiAgICAgICAgZGVmYXVsdCB2aWEgMTkyLjE2OC43Mi4xIGRldiBldGgwDQogICAgICAgIFtyb290
QG5vcm0gfl0jIGlwIHJvdXRlIGdldCA4LjguOC44DQogICAgICAgIDguOC44LjggdmlhIDE5Mi4x
NjguNzIuMSBkZXYgZXRoMSAgc3JjIDE5Mi4xNjguNzIuOTkNCiAgICAgICAgICAgIGNhY2hlICBt
dHUgMTUwMCBhZHZtc3MgMTQ2MCBob3BsaW1pdCA2NA0KDQoNCkFueSB0aG91Z2h0cyBhcyB0byB3
aGF0IGVsc2UgbWlnaHQgYmUgZ29pbmcgb24/DQoNCk9sZQ0KDQoqImlkZW50aWNhbFsuLi5daHcv
c3cgY29uZmlnIiAtLSBncmFudGVkIHRoZXJlIGFyZSBkaWZmZXJlbmNlcyBpbg0KYXBwbGljYXRp
b24gY29uZmlndXJhdGlvbiAobGF5ZXJzIDUtNykgYnV0IG5vdGhpbmcgdGhhdCBzaG91bGQgY29t
ZQ0KY2xvc2UgdG8gYWZmZWN0aW5nIHJvdXRpbmcuDQotLQ0KT2xlIENyYWlnIDxvbGNAbWFjbWls
bGFuLWNyYWlnLm5ldD4NCg0KT24gV2VkLCAyMDE0LTA0LTE2IGF0IDE2OjUxIC0wMzAwLCBKb2Vs
IEdlcmJlciB3cm90ZToNCj4gQXJlIHlvdSBydW5uaW5nIGRpZmZlcmVudCB2ZXJzaW9ucyBvZiB0
aGUgTGludXgga2VybmVsPw0KPg0KPiBJJ20gcXVpdGUgY2VydGFpbiB0aGF0IHRoZSBvcmRlciB0
aGUgcm91dGVzIGFyZSBhZGRlZCBzaG91bGQgaGF2ZSBubyB3ZWlnaHQgb24gdGhpcyBtYXR0ZXIu
IFRoZXJlIGlzIGFsc28gYW5vdGhlciBwb3NzaWJpbGl0eS4gWW91IG1pZ2h0IGJlIHJlbmFtaW5n
IHRoZSBpbnRlcmZhY2VzIGRpZmZlcmVudGx5IHRoYXQgdGhlIG9yZGVyIHRoYXQgdGhleSBhcmUg
bG9hZGVkIGludG8gdGhlIGtlcm5lbCBhcy4gV2hpY2hldmVyIGludGVyZmFjZSB3YXMgbG9hZGVk
IGZpcnN0IHdpbGwgaGF2ZSB0aGUgc21hbGxlciBpbnRlcm5hbCBudW1iZXIsIHdoaWNoIGlzIHRo
ZSBvbmUgdGhhdCB3b3VsZCBnZXQgc2VsZWN0ZWQgZmlyc3QuDQo+DQo+IEpvZWwgR2VyYmVyDQo+
IE5ldHdvcmsgU3BlY2lhbGlzdA0KPiBOZXR3b3JrIE9wZXJhdGlvbnMNCj4gRWFzdGxpbmsNCj4g
RTogSm9lbC5HZXJiZXJAY29ycC5lYXN0bGluay5jYSBUOiA1MTkuNzg2LjEyNDENCj4NCj4gLS0t
LS1PcmlnaW5hbCBNZXNzYWdlLS0tLS0NCj4gRnJvbTogT2xlIENyYWlnIFttYWlsdG86b2xjQG1h
Y21pbGxhbi1jcmFpZy5uZXRdDQo+IFNlbnQ6IEFwcmlsLTE2LTE0IDExOjA4IEFNDQo+IFRvOiBK
b2VsIEdlcmJlcg0KPiBDYzogbGFydGNAdmdlci5rZXJuZWwub3JnDQo+IFN1YmplY3Q6IFJFOiBp
cHJvdXRlMiBkb2VzIG5vdCBzZWxlY3QgMXN0IGRlZmF1bHQgcm91dGUgaW4gdGFibGU/DQo+DQo+
IEhlbGxvIEpvZWwsDQo+IFRoZXJlIG11c3QgYmUgc29tZXRoaW5nIGVsc2UgaW4gcGxheTsgd2Ug
bWFuYWdlIGh1bmRyZWRzIG9mIG90aGVyIHNpbWlsYXIgYXBwbGlhbmNlcyBhbmQgdGhpcyBpcyB0
aGUgb25seSBvbmUgdGhhdCdzIGV4aGliaXRpbmcgdGhpcyBiZWhhdmlvci4gKCJzaW1pbGFyIiA9
PSAic2FtZSBoYXJkd2FyZSBzcGVjLCBzYW1lIHNvZnR3YXJlIHNwZWMsIG9ubHkgdGhlIElQcyBh
cmUgZGlmZmVyZW50IiAtLSBhbmQgeWVzLCBtb3N0IG9mIHRoZW0gaGF2ZSBldGgwIGFuZCBldGgx
IHNoYXJpbmcgYSBzdWJuZXQgYW5kIGd3LCBhbmQgZXRoMSBpcyBhbHdheXMgdGhlIGRlZmF1bHQg
cm91dGUgZm9yIHBhY2tldHMgbm90IGJ1aWx0IHdpdGggYSBzcGVjaWZpYyBzb3VyY2UgSVAuKQ0K
Pg0KPiBUaGFua3MsDQo+ICAgICBPbGUNCj4NCj4gSm9lbCBHZXJiZXIgPEpvZWwuR2VyYmVyQGNv
cnAuZWFzdGxpbmsuY2E+IHdyb3RlOg0KPg0KPiA+SGVsbG8gT2xlOw0KPiA+DQo+ID5JZiB5b3Ug
aGF2ZSBtdWx0aXBsZSByb3V0ZXMgc2V0IHdpdGggdGhlIHNhbWUgbWV0cmljIHRvIHRoZSBzYW1l
IGRlc3RpbmF0aW9uLCBieSBkZWZhdWx0LCB0aGUgTGludXgga2VybmVsIHdpbGwgY2hvb3NlIHRo
ZSBsb3dlc3QgbnVtYmVyZWQgaW50ZXJmYWNlIHRvIHVzZS4gVGhpcyB3b3VsZCBiZSB3aHkgZXRo
MCBpcyBiZWluZyBoaXQgZXZlcnkgdGltZS4gSXQgaGFzIG5vdGhpbmcgdG8gZG8gd2l0aCB5b3Vy
IGlwIHJ1bGUgZGVmaW5pdGlvbnMuIElmIHlvdSB3YW50ZWQgdG8gcHJlZmVyIGV0aDEsIGFkZCBh
IGxhcmdlciBtZXRyaWMgZmxhZyB0byB0aGUgZXRoMCByb3V0ZSwgd2hpY2ggd2lsbCBjYXVzZSBl
dGgxIHRvIGJlIHVzZWQgaW5zdGVhZC4gVGhlbiwgb25seSBpbiB0aGUgZXZlbnQgdGhhdCBldGgx
IGlzIGxpbmstZG93biwgd2lsbCBldGgwIGJlIHVzZWQuDQo+ID4NCj4gPllvdSBjb3VsZCBhbHNv
IHNldHVwIEVDTVAgKEVxdWFsIENvc3QgTXVsdGkgUGF0aCkgd2hpY2ggd291bGQgYWxsb3cgeW91
IHRvIGxvYWQtYmFsYW5jZSB0cmFmZmljIGFjcm9zcyBib3RoIGludGVyZmFjZXMuIFRvIGRvIHRo
aXMsIGFkZCB0aGUgZXF1YWxpemUgb3B0aW9uIHRvIHlvdXIgMiBkZWZhdWx0IHJvdXRlcyB3aGVu
IGFkZGluZyB0aGVtLiBZb3UgbWlnaHQgbmVlZCB0byB2ZXJpZnkgdGhhdCB5b3UgaGF2ZSBtdWx0
aXBhdGggc3VwcG9ydCBiYWtlZCBpbnRvIHlvdXIga2VybmVsIGZpcnN0Lg0KPiA+DQo+ID5Kb2Vs
IEdlcmJlcg0KPiA+TmV0d29yayBTcGVjaWFsaXN0DQo+ID5OZXR3b3JrIE9wZXJhdGlvbnMNCj4g
PkVhc3RsaW5rDQo+ID5FOiBKb2VsLkdlcmJlckBjb3JwLmVhc3RsaW5rLmNhIFQ6IDUxOS43ODYu
MTI0MQ0KPiA+DQo+ID4tLS0tLU9yaWdpbmFsIE1lc3NhZ2UtLS0tLQ0KPiA+RnJvbTogbGFydGMt
b3duZXJAdmdlci5rZXJuZWwub3JnIFttYWlsdG86bGFydGMtb3duZXJAdmdlci5rZXJuZWwub3Jn
XSBPbiBCZWhhbGYgT2YgT2xlIENyYWlnDQo+ID5TZW50OiBBcHJpbC0xNi0xNCA3OjM0IEFNDQo+
ID5UbzogbGFydGNAdmdlci5rZXJuZWwub3JnDQo+ID5TdWJqZWN0OiBpcHJvdXRlMiBkb2VzIG5v
dCBzZWxlY3QgMXN0IGRlZmF1bHQgcm91dGUgaW4gdGFibGU/DQo+ID4NCj4gPkkgYW0gaGF2aW5n
IHRoZSBkYW1uZWRlc3QgdGltZSB3aXRoIGEgZHVhbC1JUCBDZW50T1M1LWJhc2VkIGFwcGxpYW5j
ZSB3aGljaCBzZWVtcyB0byBkZWZ5IGl0cyBpcHJvdXRlMiBjb25maWd1cmF0aW9uLCBhbmQgSSdt
IGhlcmUgaG9waW5nIHNvbWVvbmUgc21hcnRlciB0aGFuIG1lIChhZG1pdHRlZGx5IG5vdCBhIGhp
Z2ggYmFyKSBtaWdodCBiZSBzbyBraW5kIGFzIHRvIHRlbGwgbWUgd2hhdCBJJ20gbWlzc2luZzoN
Cj4gPiAgICAgICAgIyBpcCByb3V0ZSBzaG93IHRhYmxlIG1haW4NCj4gPiAgICAgICAgMTAuMS4x
LjEgZGV2IHR1bjAgIHByb3RvIGtlcm5lbCAgc2NvcGUgbGluayAgc3JjIDEwLjEuMS43DQo+ID4g
ICAgICAgIDEwLjI1MC4zMi4xIHZpYSAxMC4xLjEuMSBkZXYgdHVuMA0KPiA+ICAgICAgICAxMC4y
NTAuMTAuMC8yNCB2aWEgMTAuMS4xLjEgZGV2IHR1bjANCj4gPiAgICAgICAgMTkyLjE2OC4yNS4w
LzI0IGRldiBldGgwICBwcm90byBrZXJuZWwgIHNjb3BlIGxpbmsgIHNyYyAxOTIuMTY4LjI1LjEy
NA0KPiA+ICAgICAgICAxOTIuMTY4LjI1LjAvMjQgZGV2IGV0aDEgIHByb3RvIGtlcm5lbCAgc2Nv
cGUgbGluayAgc3JjIDE5Mi4xNjguMjUuMTAwDQo+ID4gICAgICAgIGRlZmF1bHQgdmlhIDE5Mi4x
NjguMjUuMSBkZXYgZXRoMQ0KPiA+ICAgICAgICBkZWZhdWx0IHZpYSAxOTIuMTY4LjI1LjEgZGV2
IGV0aDANCj4gPiAgICAgICAgIyBpcCByb3V0ZSBnZXQgOC44LjguOA0KPiA+ICAgICAgICA4Ljgu
OC44IHZpYSAxOTIuMTY4LjI1LjEgZGV2IGV0aDAgIHNyYyAxOTIuMTY4LjI1LjEyNA0KPiA+ICAg
ICAgICAgICAgY2FjaGUgIG10dSAxNTAwIGFkdm1zcyAxNDYwIGhvcGxpbWl0IDY0DQo+ID4NCj4g
PkkgaGF2ZSBiZWVuIHBsYXlpbmcgd2l0aCB0aGlzIGJveCBmb3Igc2V2ZXJhbCBkYXlzLCBhbmQg
bm8gbWF0dGVyIHdoYXQgSSBkbyAoaW5jbHVkaW5nIHJlYm9vdHMpIGl0IHdhbnRzIHRvIHJvdXRl
IGFsbW9zdCBldmVyeXRoaW5nIG91dCBldGgwIGluc3RlYWQgb2YgZXRoMSwgZGVzcGl0ZSB0aGUg
b3JkZXJpbmcgb2YgZGVmYXVsdCByb3V0ZXMgc2hvd24gYWJvdmUgd2hpY2ggc2hvdWxkIHNlZSBl
dGgxIHRha2luZyBwcmVjZWRlbmNlLiBObyBpcHRhYmxlcyBQUkVST1VUSU5HL25hdC9tYW5nbGUv
cmF3IHN0dWZmLCB0aGlzIGlzIGFsbCBzdHJhaWdodCBpcHJvdXRlMi4NCj4gPg0KPiA+SSBkZXRl
cm1pbmVkIHRoYXQgdGhlICdtYWluJyB0YWJsZSB3YXMgdGhlIG9uZSBhdCBpc3N1ZSBieSBpbnNl
cnRpbmcgYW5kIHJlbW92aW5nIGFuIG92ZXJyaWRpbmcgcnVsZSBhdCB2YXJpb3VzIHByaW9yaXRp
ZXMgdG8gc2VlIHdoZW4gJ2lwIGdldCcNCj4gPndvdWxkIGNoYW5nZSBiZWhhdmlvcjoNCj4gPiAg
ICAgICAgIyBpcCBydWxlIHNob3cgfCB0YWlsDQo+ID4gICAgICAgIDMyNzU4OiAgICAgICBmcm9t
IGFsbCB0byAxOTIuMTY4LjcyLjAvMjQgbG9va3VwIGRlZnJvdXRlcw0KPiA+ICAgICAgICAzMjc1
OTogICAgICAgZnJvbSAxOTIuMTY4LjcyLjAvMjQgbG9va3VwIGRlZnJvdXRlcw0KPiA+ICAgICAg
ICAzMjc2MDogICAgICAgZnJvbSAxOTIuMTY4LjcyLjAvMjQgbG9va3VwIG1ndHJvdXRlcw0KPiA+
ICAgICAgICAzMjc2NjogICAgICAgZnJvbSBhbGwgbG9va3VwIG1haW4NCj4gPiAgICAgICAgMzI3
Njc6ICAgICAgIGZyb20gYWxsIGxvb2t1cCBkZWZhdWx0DQo+ID4gICAgICAgICMgaXAgcm91dGUg
YWRkIHRhYmxlIGN1c3RvbSB0byA4LjguOC4wLzI0IHZpYSAxOTIuMTY4LjcyLjEgZGV2IGV0aDEg
c3JjIDE5Mi4xNjguNzIuMTAwDQo+ID4gICAgICAgICMgZm9yIGkgaW4gJChzZXEgMzI3NjcgLTEg
MzI3NjQpOyBkbyBpcCBydWxlIGFkZCBwcmlvICRpIHRvIDguOC44LjAvMjQgbG9va3VwIGN1c3Rv
bTsgaXAgcm91dGUgZmx1c2ggY2FjaGU7IHNsZWVwIDI7IGVjaG8gLWVuICIkaTpcdCI7IGlwIHJv
dXRlIGdldCA4LjguOC44fCBoZWFkIC0xOyBpcCBydWxlIGRlbCBwcmlvICRpIHRvIDguOC44LjAv
MjQgbG9va3VwIGN1c3RvbTsgaXAgcm91dGUgZmx1c2ggY2FjaGU7IHNsZWVwIDI7IGRvbmUNCj4g
PiAgICAgICAgMzI3Njc6ICAgICAgIDguOC44LjggdmlhIDE5Mi4xNjguNzIuMSBkZXYgZXRoMCAg
c3JjIDE5Mi4xNjguNzIuMTI0DQo+ID4gICAgICAgIDMyNzY2OiAgICAgICA4LjguOC44IHZpYSAx
OTIuMTY4LjcyLjEgZGV2IGV0aDAgIHNyYyAxOTIuMTY4LjcyLjEyNA0KPiA+ICAgICAgICAzMjc2
NTogICAgICAgOC44LjguOCB2aWEgMTkyLjE2OC43Mi4xIGRldiBldGgxICBzcmMgMTkyLjE2OC43
Mi4xMDANCj4gPiAgICAgICAgMzI3NjQ6ICAgICAgIDguOC44LjggdmlhIDE5Mi4xNjguNzIuMSBk
ZXYgZXRoMSAgc3JjIDE5Mi4xNjguNzIuMTAwDQo+ID4NCj4gPkJvdGggaW50ZXJmYWNlcyBhcmUg
dXAsIGFuZCBhcmUgKmFibGUqIHRvIHJlYWNoIDguOC44LjggdmlhIHRoZSB1cHN0cmVhbQ0KPiA+
Z3c6DQo+ID4gICAgICAgICMgcGluZyAtYyAxIC1JIGV0aDAgOC44LjguOA0KPiA+ICAgICAgICBQ
SU5HIDguOC44LjggKDguOC44LjgpIGZyb20gMTkyLjE2OC43Mi4xMjQgZXRoMDogNTYoODQpIGJ5
dGVzIG9mIGRhdGEuDQo+ID4gICAgICAgIDY0IGJ5dGVzIGZyb20gOC44LjguODogaWNtcF9zZXE9
MSB0dGw9NDcgdGltZT0xNC45IG1zDQo+ID4NCj4gPiAgICAgICAgLS0tIDguOC44LjggcGluZyBz
dGF0aXN0aWNzIC0tLQ0KPiA+ICAgICAgICAxIHBhY2tldHMgdHJhbnNtaXR0ZWQsIDEgcmVjZWl2
ZWQsIDAlIHBhY2tldCBsb3NzLCB0aW1lIDBtcw0KPiA+ICAgICAgICBydHQgbWluL2F2Zy9tYXgv
bWRldiA9IDE0Ljk5MC8xNC45OTAvMTQuOTkwLzAuMDAwIG1zDQo+ID4gICAgICAgICMgcGluZyAt
YyAxIC1JIGV0aDEgOC44LjguOA0KPiA+ICAgICAgICBQSU5HIDguOC44LjggKDguOC44LjgpIGZy
b20gMTkyLjE2OC43Mi4xMDAgZXRoMTogNTYoODQpIGJ5dGVzIG9mIGRhdGEuDQo+ID4gICAgICAg
IDY0IGJ5dGVzIGZyb20gOC44LjguODogaWNtcF9zZXE9MSB0dGw9NDcgdGltZT0xNC45IG1zDQo+
ID4NCj4gPiAgICAgICAgLS0tIDguOC44LjggcGluZyBzdGF0aXN0aWNzIC0tLQ0KPiA+ICAgICAg
ICAxIHBhY2tldHMgdHJhbnNtaXR0ZWQsIDEgcmVjZWl2ZWQsIDAlIHBhY2tldCBsb3NzLCB0aW1l
IDBtcw0KPiA+ICAgICAgICBydHQgbWluL2F2Zy9tYXgvbWRldiA9IDE0Ljk5OS8xNC45OTkvMTQu
OTk5LzAuMDAwIG1zDQo+ID4NCj4gPkNhbiBhbnlvbmUgaGVscCBteSBmaWd1cmUgb3V0IHdoeSB0
aGlzIGJveCAoYWxvbmUgb3V0IG9mIG1hbnksIG1hbnkgYXBwbGlhbmNlcyB3aXRoIHNpbWlsYXIg
Y29uZmlndXJhdGlvbnMgYXQgdmFyaW91cyBjdXN0b21lciBzaXRlcykgaXMgZGV0ZXJtaW5lZCB0
byByZWFjaCBvdXQgdGhyb3VnaCBldGgwPw0KPiA+DQo+ID5UaGUgZnVsbCBSUERCIHJ1bGVzZXQ6
DQo+ID4gICAgICAgICMgaXAgcnVsZSBzaG93DQo+ID4gICAgICAgIDA6ICAgZnJvbSBhbGwgbG9v
a3VwIDI1NQ0KPiA+ICAgICAgICAxMDogIGZyb20gYWxsIGxvb2t1cCBib290c3RyYXANCj4gPiAg
ICAgICAgMzI3MzY6ICAgICAgIGZyb20gYWxsIHRvIDEyOC4xMTkuNDAuMSBsb29rdXAgbWd0cm91
dGVzDQo+ID4gICAgICAgIDMyNzM3OiAgICAgICBmcm9tIGFsbCB0byAxOTIuMTY4LjEyNi4yMjgg
bG9va3VwIG1ndHJvdXRlcw0KPiA+ICAgICAgICAzMjczODogICAgICAgZnJvbSBhbGwgdG8gMTky
LjE2OC43Ni4yMzIgbG9va3VwIG1ndHJvdXRlcw0KPiA+ICAgICAgICAzMjczOTogICAgICAgZnJv
bSBhbGwgdG8gMTkyLjE2OC45MC4xMTIgbG9va3VwIG1ndHJvdXRlcw0KPiA+ICAgICAgICAzMjc0
MDogICAgICAgZnJvbSBhbGwgdG8gMTkyLjE2OC42MS4xMTIgbG9va3VwIG1ndHJvdXRlcw0KPiA+
ICAgICAgICAzMjc0MTogICAgICAgZnJvbSBhbGwgdG8gMTkyLjE2OC43Ni4yMzIgbG9va3VwIG1n
dHJvdXRlcw0KPiA+ICAgICAgICAzMjc0MjogICAgICAgZnJvbSBhbGwgdG8gMTkyLjE2OC42MS4x
MTIgbG9va3VwIG1ndHJvdXRlcw0KPiA+ICAgICAgICAzMjc0MzogICAgICAgZnJvbSBhbGwgdG8g
MTkyLjE2OC4zNC4zNSBsb29rdXAgbWd0cm91dGVzDQo+ID4gICAgICAgIDMyNzQ0OiAgICAgICBm
cm9tIGFsbCB0byAxOTIuMTY4LjYxLjExMiBsb29rdXAgZGVmcm91dGVzDQo+ID4gICAgICAgIDMy
NzQ1OiAgICAgICBmcm9tIGFsbCB0byAxOTIuMTY4LjEzNC40NyBsb29rdXAgbWd0cm91dGVzDQo+
ID4gICAgICAgIDMyNzQ2OiAgICAgICBmcm9tIGFsbCB0byAxOTIuMTY4LjEyNy42OCBsb29rdXAg
bWd0cm91dGVzDQo+ID4gICAgICAgIDMyNzQ3OiAgICAgICBmcm9tIGFsbCB0byAxOTIuMTY4LjY2
LjYgbG9va3VwIG1ndHJvdXRlcw0KPiA+ICAgICAgICAzMjc0ODogICAgICAgZnJvbSBhbGwgdG8g
MTkyLjE2OC4xMjYuMjI4IGxvb2t1cCBtZ3Ryb3V0ZXMNCj4gPiAgICAgICAgMzI3NDk6ICAgICAg
IGZyb20gYWxsIHRvIDE5Mi4xNjguMTI3LjY4IGxvb2t1cCBtZ3Ryb3V0ZXMNCj4gPiAgICAgICAg
MzI3NTA6ICAgICAgIGZyb20gYWxsIHRvIDE5Mi4xNjguMTM0LjQxIGxvb2t1cCBtZ3Ryb3V0ZXMN
Cj4gPiAgICAgICAgMzI3NTE6ICAgICAgIGZyb20gYWxsIHRvIDE5Mi4xNjguMTM0LjQxIGxvb2t1
cCBtZ3Ryb3V0ZXMNCj4gPiAgICAgICAgMzI3NTI6ICAgICAgIGZyb20gYWxsIHRvIDE5Mi4xNjgu
NzYuMjMyIGxvb2t1cCBtZ3Ryb3V0ZXMNCj4gPiAgICAgICAgMzI3NTM6ICAgICAgIGZyb20gYWxs
IHRvIDEwNy4yMy4xNS4xNzUgbG9va3VwIG1ndHJvdXRlcw0KPiA+ICAgICAgICAzMjc1NDogICAg
ICAgZnJvbSBhbGwgdG8gMjE2Ljg3LjY5Ljk0IGxvb2t1cCBtZ3Ryb3V0ZXMNCj4gPiAgICAgICAg
MzI3NTU6ICAgICAgIGZyb20gMTkyLjE2OC43Mi4xMjQgbG9va3VwIG1ndHJvdXRlcw0KPiA+ICAg
ICAgICAzMjc1NjogICAgICAgZnJvbSAxOTIuMTY4LjcyLjEwMCBsb29rdXAgZGVmcm91dGVzDQo+
ID4gICAgICAgIDMyNzU3OiAgICAgICBmcm9tIDE5Mi4xNjguNzIuMC8yNCB0byAxOTIuMTY4Ljcy
LjAvMjQgbG9va3VwIG1ndHJvdXRlcw0KPiA+ICAgICAgICAzMjc1ODogICAgICAgZnJvbSBhbGwg
dG8gMTkyLjE2OC43Mi4wLzI0IGxvb2t1cCBkZWZyb3V0ZXMNCj4gPiAgICAgICAgMzI3NTk6ICAg
ICAgIGZyb20gMTkyLjE2OC43Mi4wLzI0IGxvb2t1cCBkZWZyb3V0ZXMNCj4gPiAgICAgICAgMzI3
NjA6ICAgICAgIGZyb20gMTkyLjE2OC43Mi4wLzI0IGxvb2t1cCBtZ3Ryb3V0ZXMNCj4gPiAgICAg
ICAgMzI3NjY6ICAgICAgIGZyb20gYWxsIGxvb2t1cCBtYWluDQo+ID4gICAgICAgIDMyNzY3OiAg
ICAgICBmcm9tIGFsbCBsb29rdXAgZGVmYXVsdA0KPiA+DQo+ID4NCj4gPg0KPiA+ICAgICBUaGFu
ayB5b3UgZm9yIGFueSBjbHVlIHlvdSBjYW4gc3BhcmUsDQo+ID4gICAgICAgICAgICAgT2xlDQo+
ID4tLQ0KPiA+T2xlIENyYWlnIDxvbGNAbWFjbWlsbGFuLWNyYWlnLm5ldD4NCj4gPg0KPiA+LS0N
Cj4gPlRvIHVuc3Vic2NyaWJlIGZyb20gdGhpcyBsaXN0OiBzZW5kIHRoZSBsaW5lICJ1bnN1YnNj
cmliZSBsYXJ0YyIgaW4gdGhlIGJvZHkgb2YgYSBtZXNzYWdlIHRvIG1ham9yZG9tb0B2Z2VyLmtl
cm5lbC5vcmcgTW9yZSBtYWpvcmRvbW8gaW5mbyBhdCAgaHR0cDovL3ZnZXIua2VybmVsLm9yZy9t
YWpvcmRvbW8taW5mby5odG1sDQo+IHsubisrJd22F3d7Lm4ralwpdypqZx7domoNCkcNCmo6K3Z3
am0eHndmaNmlDQoNCg0K
^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: iproute2 does not select 1st default route in table?
2014-04-16 11:34 iproute2 does not select 1st default route in table? Ole Craig
` (4 preceding siblings ...)
2014-05-12 11:52 ` Joel Gerber
@ 2014-05-12 20:05 ` Anton Danilov
2014-05-13 23:35 ` Ole Craig
` (4 subsequent siblings)
10 siblings, 0 replies; 12+ messages in thread
From: Anton Danilov @ 2014-05-12 20:05 UTC (permalink / raw)
To: lartc
Hi, Joel.
Please use 'ip route get' and 'ip route show match' commands for
troubleshooting of route selection.
Some examples:
ip route get <dst> from <src> iif <lan-iface> - show route for transit
packets (not local-originated).
ip route show match <prefix> - show all mathed routes (with different
prefix length).
2014-05-12 15:52 GMT+04:00 Joel Gerber <Joel.Gerber@corp.eastlink.ca>:
> I'm getting confused now. I did some online reading, and I've found the following:
>
> If several routes match the packet, the following pruning rules are used to select the best one:
>
> 1. The longest matching prefix is selected; all shorter ones are dropped.
> 2. If the TOS of some route with the longest prefix is equal to the TOS of the packet, routes with different TOS are dropped.
> 3. If no exact TOS match is found and routes with TOS=0 exist, the rest of the routes are pruned. Otherwise the route lookup fails.
> 4. If several routes remain after steps 1-3 have been tried, then routes with the best preference value are selected.
> 5. If several routes still exist, then the first of them is selected.
>
> http://www.softpanorama.org/Net/Internet_layer/Routing/policy_routing.shtml
>
> I'm having a hard time finding anything more official that states this, and without looking at the kernel source code I can't be 100% certain, but it seems that the first route listed should be selected, when there are multiple matches.
>
> Here's something else to try, run the command "ip route show cache" and paste the contents here. As the cache is the first thing queried before looking at your routing list, I'm curious to see what it shows.
>
> Joel Gerber
> Network Specialist
> Network Operations
> Eastlink
> E: Joel.Gerber@corp.eastlink.ca T: 519.786.1241
> -----Original Message-----
> From: Ole Craig [mailto:olc@macmillan-craig.net]
> Sent: May-09-14 4:14 PM
> To: Joel Gerber
> Cc: lartc@vger.kernel.org
> Subject: Re: iproute2 does not select 1st default route in table?
>
> Joel, et al -
> TL;DR: behavior at issue differs between 2 boxes which are 1 IP
> address apart with identical hw/sw loads; same kernel; interface
> numbering unchanged after kernel probing. What gives? What am I
> missing?
>
> (Apologies for the delayed response, life around here has been frantic
> and this has been sitting around half-composed in my mail client.)
>
> Details:
> Ok, I have two dual-interface boxes sitting next to each other on
> this customer's network. The first box is the one we've been discussing,
> I'll call him "Deviant" from now on. The second box (hereinafter "Norm")
> is acting just like the rest of the appliances in our fleet, i.e.
> routing out eth1 by default. Hoping that comparing these two (which are
> identical WRT both hardware and software config*) can lead to a more
> informed/precise conclusion as to what's causing them to behave
> differently (and maybe some ideas for re-norming Deviant; arbitrary
> routing is Not My Kink.:)
>
> kernel insertion order on Deviant:
> [root@dvnt ~]# uname -a
> Linux dvnt.example.com 2.6.18-348.4.1.el5 #1 SMP Tue Apr 16 15:40:06 EDT 2013 x86_64 x86_64 x86_64 GNU/Linux
> [root@dvnt ~]# dmesg | egrep 'eth.: \('
> igb 0000:01:00.0: eth0: (PCIe:2.5Gb/s:Width x4)
> 00:25:90:30:28:6c
> igb 0000:01:00.1: eth1: (PCIe:2.5Gb/s:Width x4)
> 00:25:90:30:28:6d
> device<-->address mapping on Deviant:
> [root@dvnt ~]# ip link show
> 1: lo: <LOOPBACK,UP,LOWER_UP> mtu 16436 qdisc noqueue
> link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
> 2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc
> pfifo_fast qlen 1000
> link/ether 00:25:90:30:28:6c brd ff:ff:ff:ff:ff:ff
> 3: eth1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc
> pfifo_fast qlen 1000
> link/ether 00:25:90:30:28:6d brd ff:ff:ff:ff:ff:ff
> Link status on Deviant:
> [root@dvnt ~]# for i in 0 1; do echo -n "eth$i: "; ethtool eth$i | grep Link; done
> eth0: Link detected: yes
> eth1: Link detected: yes
>
>
> kernel insertion order on Norm:
> [root@norm ~]# uname -a
> Linux norm.example.com 2.6.18-348.4.1.el5 #1 SMP Tue Apr 16 15:40:06 EDT 2013 x86_64 x86_64 x86_64 GNU/Linux
> [root@norm ~]# dmesg | egrep 'eth.: \('
> igb 0000:01:00.0: eth0: (PCIe:2.5Gb/s:Width x4) 00:25:90:30:2c:f8
> igb 0000:01:00.1: eth1: (PCIe:2.5Gb/s:Width x4) 00:25:90:30:2c:f9
> device<-->address map on Norm:
> [root@norm ~]# ip link show
> 1: lo: <LOOPBACK,UP,LOWER_UP> mtu 16436 qdisc noqueue
> link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
> 2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast qlen 1000
> link/ether 00:25:90:30:2c:f8 brd ff:ff:ff:ff:ff:ff
> 3: eth1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast qlen 1000
> link/ether 00:25:90:30:2c:f9 brd ff:ff:ff:ff:ff:ff
> Link status on Norm:
> [root@norm ~]# for i in 0 1; do echo -n "eth$i: "; ethtool eth$i | grep Link; done
> eth0: Link detected: yes
> eth1: Link detected: yes
>
>
> So, we can see that in both cases the device ordering is unchanged from
> that which was discovered at boot by the kernel, and that eth0 was
> probed first.
>
> And here again for posterity is the active routing table and results of
> "ip route get" on each machine:
>
> Deviant:
> [root@dvnt ~]# ip route show table main
> 10.1.1.1 dev tun0 proto kernel scope link src 10.1.1.7
> 10.250.32.1 via 10.1.1.1 dev tun0
> 10.250.10.0/24 via 10.1.1.1 dev tun0
> 192.168.72.0/24 dev eth0 proto kernel scope link src 192.168.72.124
> 192.168.72.0/24 dev eth1 proto kernel scope link src 192.168.72.100
> default via 192.168.72.1 dev eth1
> default via 192.168.72.1 dev eth0
> [root@dvnt ~]# ip route get 8.8.8.8 | sanize
> 8.8.8.8 via 192.168.72.1 dev eth0 src 192.168.72.124
> cache mtu 1500 advmss 1460 hoplimit 64
>
> Norm:
> [root@norm ~]# ip route show table main
> 10.1.1.1 dev tun0 proto kernel scope link src 10.1.1.45
> 10.250.32.1 via 10.1.1.1 dev tun0
> 10.250.10.0/24 via 10.1.1.1 dev tun0
> 192.168.72.0/24 dev eth0 proto kernel scope link src 192.168.72.123
> 192.168.72.0/24 dev eth1 proto kernel scope link src 192.168.72.99
> default via 192.168.72.1 dev eth1
> default via 192.168.72.1 dev eth0
> [root@norm ~]# ip route get 8.8.8.8
> 8.8.8.8 via 192.168.72.1 dev eth1 src 192.168.72.99
> cache mtu 1500 advmss 1460 hoplimit 64
>
>
> Any thoughts as to what else might be going on?
>
> Ole
>
> *"identical[...]hw/sw config" -- granted there are differences in
> application configuration (layers 5-7) but nothing that should come
> close to affecting routing.
> --
> Ole Craig <olc@macmillan-craig.net>
>
> On Wed, 2014-04-16 at 16:51 -0300, Joel Gerber wrote:
>> Are you running different versions of the Linux kernel?
>>
>> I'm quite certain that the order the routes are added should have no weight on this matter. There is also another possibility. You might be renaming the interfaces differently that the order that they are loaded into the kernel as. Whichever interface was loaded first will have the smaller internal number, which is the one that would get selected first.
>>
>> Joel Gerber
>> Network Specialist
>> Network Operations
>> Eastlink
>> E: Joel.Gerber@corp.eastlink.ca T: 519.786.1241
>>
>> -----Original Message-----
>> From: Ole Craig [mailto:olc@macmillan-craig.net]
>> Sent: April-16-14 11:08 AM
>> To: Joel Gerber
>> Cc: lartc@vger.kernel.org
>> Subject: RE: iproute2 does not select 1st default route in table?
>>
>> Hello Joel,
>> There must be something else in play; we manage hundreds of other similar appliances and this is the only one that's exhibiting this behavior. ("similar" = "same hardware spec, same software spec, only the IPs are different" -- and yes, most of them have eth0 and eth1 sharing a subnet and gw, and eth1 is always the default route for packets not built with a specific source IP.)
>>
>> Thanks,
>> Ole
>>
>> Joel Gerber <Joel.Gerber@corp.eastlink.ca> wrote:
>>
>> >Hello Ole;
>> >
>> >If you have multiple routes set with the same metric to the same destination, by default, the Linux kernel will choose the lowest numbered interface to use. This would be why eth0 is being hit every time. It has nothing to do with your ip rule definitions. If you wanted to prefer eth1, add a larger metric flag to the eth0 route, which will cause eth1 to be used instead. Then, only in the event that eth1 is link-down, will eth0 be used.
>> >
>> >You could also setup ECMP (Equal Cost Multi Path) which would allow you to load-balance traffic across both interfaces. To do this, add the equalize option to your 2 default routes when adding them. You might need to verify that you have multipath support baked into your kernel first.
>> >
>> >Joel Gerber
>> >Network Specialist
>> >Network Operations
>> >Eastlink
>> >E: Joel.Gerber@corp.eastlink.ca T: 519.786.1241
>> >
>> >-----Original Message-----
>> >From: lartc-owner@vger.kernel.org [mailto:lartc-owner@vger.kernel.org] On Behalf Of Ole Craig
>> >Sent: April-16-14 7:34 AM
>> >To: lartc@vger.kernel.org
>> >Subject: iproute2 does not select 1st default route in table?
>> >
>> >I am having the damnedest time with a dual-IP CentOS5-based appliance which seems to defy its iproute2 configuration, and I'm here hoping someone smarter than me (admittedly not a high bar) might be so kind as to tell me what I'm missing:
>> > # ip route show table main
>> > 10.1.1.1 dev tun0 proto kernel scope link src 10.1.1.7
>> > 10.250.32.1 via 10.1.1.1 dev tun0
>> > 10.250.10.0/24 via 10.1.1.1 dev tun0
>> > 192.168.25.0/24 dev eth0 proto kernel scope link src 192.168.25.124
>> > 192.168.25.0/24 dev eth1 proto kernel scope link src 192.168.25.100
>> > default via 192.168.25.1 dev eth1
>> > default via 192.168.25.1 dev eth0
>> > # ip route get 8.8.8.8
>> > 8.8.8.8 via 192.168.25.1 dev eth0 src 192.168.25.124
>> > cache mtu 1500 advmss 1460 hoplimit 64
>> >
>> >I have been playing with this box for several days, and no matter what I do (including reboots) it wants to route almost everything out eth0 instead of eth1, despite the ordering of default routes shown above which should see eth1 taking precedence. No iptables PREROUTING/nat/mangle/raw stuff, this is all straight iproute2.
>> >
>> >I determined that the 'main' table was the one at issue by inserting and removing an overriding rule at various priorities to see when 'ip get'
>> >would change behavior:
>> > # ip rule show | tail
>> > 32758: from all to 192.168.72.0/24 lookup defroutes
>> > 32759: from 192.168.72.0/24 lookup defroutes
>> > 32760: from 192.168.72.0/24 lookup mgtroutes
>> > 32766: from all lookup main
>> > 32767: from all lookup default
>> > # ip route add table custom to 8.8.8.0/24 via 192.168.72.1 dev eth1 src 192.168.72.100
>> > # for i in $(seq 32767 -1 32764); do ip rule add prio $i to 8.8.8.0/24 lookup custom; ip route flush cache; sleep 2; echo -en "$i:\t"; ip route get 8.8.8.8| head -1; ip rule del prio $i to 8.8.8.0/24 lookup custom; ip route flush cache; sleep 2; done
>> > 32767: 8.8.8.8 via 192.168.72.1 dev eth0 src 192.168.72.124
>> > 32766: 8.8.8.8 via 192.168.72.1 dev eth0 src 192.168.72.124
>> > 32765: 8.8.8.8 via 192.168.72.1 dev eth1 src 192.168.72.100
>> > 32764: 8.8.8.8 via 192.168.72.1 dev eth1 src 192.168.72.100
>> >
>> >Both interfaces are up, and are *able* to reach 8.8.8.8 via the upstream
>> >gw:
>> > # ping -c 1 -I eth0 8.8.8.8
>> > PING 8.8.8.8 (8.8.8.8) from 192.168.72.124 eth0: 56(84) bytes of data.
>> > 64 bytes from 8.8.8.8: icmp_seq=1 ttlG time\x14.9 ms
>> >
>> > --- 8.8.8.8 ping statistics ---
>> > 1 packets transmitted, 1 received, 0% packet loss, time 0ms
>> > rtt min/avg/max/mdev = 14.990/14.990/14.990/0.000 ms
>> > # ping -c 1 -I eth1 8.8.8.8
>> > PING 8.8.8.8 (8.8.8.8) from 192.168.72.100 eth1: 56(84) bytes of data.
>> > 64 bytes from 8.8.8.8: icmp_seq=1 ttlG time\x14.9 ms
>> >
>> > --- 8.8.8.8 ping statistics ---
>> > 1 packets transmitted, 1 received, 0% packet loss, time 0ms
>> > rtt min/avg/max/mdev = 14.999/14.999/14.999/0.000 ms
>> >
>> >Can anyone help my figure out why this box (alone out of many, many appliances with similar configurations at various customer sites) is determined to reach out through eth0?
>> >
>> >The full RPDB ruleset:
>> > # ip rule show
>> > 0: from all lookup 255
>> > 10: from all lookup bootstrap
>> > 32736: from all to 128.119.40.1 lookup mgtroutes
>> > 32737: from all to 192.168.126.228 lookup mgtroutes
>> > 32738: from all to 192.168.76.232 lookup mgtroutes
>> > 32739: from all to 192.168.90.112 lookup mgtroutes
>> > 32740: from all to 192.168.61.112 lookup mgtroutes
>> > 32741: from all to 192.168.76.232 lookup mgtroutes
>> > 32742: from all to 192.168.61.112 lookup mgtroutes
>> > 32743: from all to 192.168.34.35 lookup mgtroutes
>> > 32744: from all to 192.168.61.112 lookup defroutes
>> > 32745: from all to 192.168.134.47 lookup mgtroutes
>> > 32746: from all to 192.168.127.68 lookup mgtroutes
>> > 32747: from all to 192.168.66.6 lookup mgtroutes
>> > 32748: from all to 192.168.126.228 lookup mgtroutes
>> > 32749: from all to 192.168.127.68 lookup mgtroutes
>> > 32750: from all to 192.168.134.41 lookup mgtroutes
>> > 32751: from all to 192.168.134.41 lookup mgtroutes
>> > 32752: from all to 192.168.76.232 lookup mgtroutes
>> > 32753: from all to 107.23.15.175 lookup mgtroutes
>> > 32754: from all to 216.87.69.94 lookup mgtroutes
>> > 32755: from 192.168.72.124 lookup mgtroutes
>> > 32756: from 192.168.72.100 lookup defroutes
>> > 32757: from 192.168.72.0/24 to 192.168.72.0/24 lookup mgtroutes
>> > 32758: from all to 192.168.72.0/24 lookup defroutes
>> > 32759: from 192.168.72.0/24 lookup defroutes
>> > 32760: from 192.168.72.0/24 lookup mgtroutes
>> > 32766: from all lookup main
>> > 32767: from all lookup default
>> >
>> >
>> >
>> > Thank you for any clue you can spare,
>> > Ole
>> >--
>> >Ole Craig <olc@macmillan-craig.net>
>> >
>> >--
>> >To unsubscribe from this list: send the line "unsubscribe lartc" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
>> {.n++%ݶ w{.n+j\)w*jg ݢj
> G
> j:+vwjm wfh٥
>
>
--
Anton.
^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: iproute2 does not select 1st default route in table?
2014-04-16 11:34 iproute2 does not select 1st default route in table? Ole Craig
` (5 preceding siblings ...)
2014-05-12 20:05 ` Anton Danilov
@ 2014-05-13 23:35 ` Ole Craig
2014-05-15 19:25 ` Joel Gerber
` (3 subsequent siblings)
10 siblings, 0 replies; 12+ messages in thread
From: Ole Craig @ 2014-05-13 23:35 UTC (permalink / raw)
To: lartc
Anton, Joel -
Here's the output of ip route show cache 8.8.8.8, ip route show
match 8.8.8.8, and ip route get 8.8.8.8
...on Deviant:
[root@dvnt ~]# ip route show cache 8.8.8.8
8.8.8.8 via 192.168.72.1 dev eth0 src 192.168.72.124
cache mtu 1500 advmss 1460 hoplimit 64
8.8.8.8 from 192.168.72.124 via 192.168.72.1 dev eth0
cache mtu 1500 advmss 1460 hoplimit 64
[root@dvnt ~]# ip route show match 8.8.8.8
default via 192.168.72.1 dev eth1
default via 192.168.72.1 dev eth0
[root@dvnt ~]# ip route get 8.8.8.8
8.8.8.8 via 192.168.72.1 dev eth0 src 192.168.72.124
cache mtu 1500 advmss 1460 hoplimit 64
...on Norm:
[root@norm ~]# ip route show cache 8.8.8.8
8.8.8.8 via 192.168.72.1 dev eth1 src 192.168.72.99
cache mtu 1500 advmss 1460 hoplimit 64
8.8.8.8 from 192.168.72.99 via 192.168.72.1 dev eth1
cache mtu 1500 advmss 1460 hoplimit 64
[root@norm ~]# ip route show match 8.8.8.8
default via 192.168.72.1 dev eth1
default via 192.168.72.1 dev eth0
[root@norm ~]# ip route get 8.8.8.8
8.8.8.8 via 192.168.72.1 dev eth1 src 192.168.72.99
cache mtu 1500 advmss 1460 hoplimit 64
Thanks,
Ole
On Tue, 2014-05-13 at 00:05 +0400, Anton Danilov wrote:
> Hi, Joel.
> Please use 'ip route get' and 'ip route show match' commands for
> troubleshooting of route selection.
> Some examples:
> ip route get <dst> from <src> iif <lan-iface> - show route for transit
> packets (not local-originated).
> ip route show match <prefix> - show all mathed routes (with different
> prefix length).
>
> 2014-05-12 15:52 GMT+04:00 Joel Gerber <Joel.Gerber@corp.eastlink.ca>:
> > I'm getting confused now. I did some online reading, and I've found the following:
> >
> > If several routes match the packet, the following pruning rules are used to select the best one:
> >
> > 1. The longest matching prefix is selected; all shorter ones are dropped.
> > 2. If the TOS of some route with the longest prefix is equal to the TOS of the packet, routes with different TOS are dropped.
> > 3. If no exact TOS match is found and routes with TOS=0 exist, the rest of the routes are pruned. Otherwise the route lookup fails.
> > 4. If several routes remain after steps 1-3 have been tried, then routes with the best preference value are selected.
> > 5. If several routes still exist, then the first of them is selected.
> >
> > http://www.softpanorama.org/Net/Internet_layer/Routing/policy_routing.shtml
> >
> > I'm having a hard time finding anything more official that states this, and without looking at the kernel source code I can't be 100% certain, but it seems that the first route listed should be selected, when there are multiple matches.
> >
> > Here's something else to try, run the command "ip route show cache" and paste the contents here. As the cache is the first thing queried before looking at your routing list, I'm curious to see what it shows.
> >
> > Joel Gerber
> > Network Specialist
> > Network Operations
> > Eastlink
> > E: Joel.Gerber@corp.eastlink.ca T: 519.786.1241
> > -----Original Message-----
> > From: Ole Craig [mailto:olc@macmillan-craig.net]
> > Sent: May-09-14 4:14 PM
> > To: Joel Gerber
> > Cc: lartc@vger.kernel.org
> > Subject: Re: iproute2 does not select 1st default route in table?
> >
> > Joel, et al -
> > TL;DR: behavior at issue differs between 2 boxes which are 1 IP
> > address apart with identical hw/sw loads; same kernel; interface
> > numbering unchanged after kernel probing. What gives? What am I
> > missing?
> >
> > (Apologies for the delayed response, life around here has been frantic
> > and this has been sitting around half-composed in my mail client.)
> >
> > Details:
> > Ok, I have two dual-interface boxes sitting next to each other on
> > this customer's network. The first box is the one we've been discussing,
> > I'll call him "Deviant" from now on. The second box (hereinafter "Norm")
> > is acting just like the rest of the appliances in our fleet, i.e.
> > routing out eth1 by default. Hoping that comparing these two (which are
> > identical WRT both hardware and software config*) can lead to a more
> > informed/precise conclusion as to what's causing them to behave
> > differently (and maybe some ideas for re-norming Deviant; arbitrary
> > routing is Not My Kink.:)
> >
> > kernel insertion order on Deviant:
> > [root@dvnt ~]# uname -a
> > Linux dvnt.example.com 2.6.18-348.4.1.el5 #1 SMP Tue Apr 16 15:40:06 EDT 2013 x86_64 x86_64 x86_64 GNU/Linux
> > [root@dvnt ~]# dmesg | egrep 'eth.: \('
> > igb 0000:01:00.0: eth0: (PCIe:2.5Gb/s:Width x4)
> > 00:25:90:30:28:6c
> > igb 0000:01:00.1: eth1: (PCIe:2.5Gb/s:Width x4)
> > 00:25:90:30:28:6d
> > device<-->address mapping on Deviant:
> > [root@dvnt ~]# ip link show
> > 1: lo: <LOOPBACK,UP,LOWER_UP> mtu 16436 qdisc noqueue
> > link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
> > 2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc
> > pfifo_fast qlen 1000
> > link/ether 00:25:90:30:28:6c brd ff:ff:ff:ff:ff:ff
> > 3: eth1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc
> > pfifo_fast qlen 1000
> > link/ether 00:25:90:30:28:6d brd ff:ff:ff:ff:ff:ff
> > Link status on Deviant:
> > [root@dvnt ~]# for i in 0 1; do echo -n "eth$i: "; ethtool eth$i | grep Link; done
> > eth0: Link detected: yes
> > eth1: Link detected: yes
> >
> >
> > kernel insertion order on Norm:
> > [root@norm ~]# uname -a
> > Linux norm.example.com 2.6.18-348.4.1.el5 #1 SMP Tue Apr 16 15:40:06 EDT 2013 x86_64 x86_64 x86_64 GNU/Linux
> > [root@norm ~]# dmesg | egrep 'eth.: \('
> > igb 0000:01:00.0: eth0: (PCIe:2.5Gb/s:Width x4) 00:25:90:30:2c:f8
> > igb 0000:01:00.1: eth1: (PCIe:2.5Gb/s:Width x4) 00:25:90:30:2c:f9
> > device<-->address map on Norm:
> > [root@norm ~]# ip link show
> > 1: lo: <LOOPBACK,UP,LOWER_UP> mtu 16436 qdisc noqueue
> > link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
> > 2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast qlen 1000
> > link/ether 00:25:90:30:2c:f8 brd ff:ff:ff:ff:ff:ff
> > 3: eth1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast qlen 1000
> > link/ether 00:25:90:30:2c:f9 brd ff:ff:ff:ff:ff:ff
> > Link status on Norm:
> > [root@norm ~]# for i in 0 1; do echo -n "eth$i: "; ethtool eth$i | grep Link; done
> > eth0: Link detected: yes
> > eth1: Link detected: yes
> >
> >
> > So, we can see that in both cases the device ordering is unchanged from
> > that which was discovered at boot by the kernel, and that eth0 was
> > probed first.
> >
> > And here again for posterity is the active routing table and results of
> > "ip route get" on each machine:
> >
> > Deviant:
> > [root@dvnt ~]# ip route show table main
> > 10.1.1.1 dev tun0 proto kernel scope link src 10.1.1.7
> > 10.250.32.1 via 10.1.1.1 dev tun0
> > 10.250.10.0/24 via 10.1.1.1 dev tun0
> > 192.168.72.0/24 dev eth0 proto kernel scope link src 192.168.72.124
> > 192.168.72.0/24 dev eth1 proto kernel scope link src 192.168.72.100
> > default via 192.168.72.1 dev eth1
> > default via 192.168.72.1 dev eth0
> > [root@dvnt ~]# ip route get 8.8.8.8 | sanize
> > 8.8.8.8 via 192.168.72.1 dev eth0 src 192.168.72.124
> > cache mtu 1500 advmss 1460 hoplimit 64
> >
> > Norm:
> > [root@norm ~]# ip route show table main
> > 10.1.1.1 dev tun0 proto kernel scope link src 10.1.1.45
> > 10.250.32.1 via 10.1.1.1 dev tun0
> > 10.250.10.0/24 via 10.1.1.1 dev tun0
> > 192.168.72.0/24 dev eth0 proto kernel scope link src 192.168.72.123
> > 192.168.72.0/24 dev eth1 proto kernel scope link src 192.168.72.99
> > default via 192.168.72.1 dev eth1
> > default via 192.168.72.1 dev eth0
> > [root@norm ~]# ip route get 8.8.8.8
> > 8.8.8.8 via 192.168.72.1 dev eth1 src 192.168.72.99
> > cache mtu 1500 advmss 1460 hoplimit 64
> >
> >
> > Any thoughts as to what else might be going on?
> >
> > Ole
> >
> > *"identical[...]hw/sw config" -- granted there are differences in
> > application configuration (layers 5-7) but nothing that should come
> > close to affecting routing.
> > --
> > Ole Craig <olc@macmillan-craig.net>
> >
> > On Wed, 2014-04-16 at 16:51 -0300, Joel Gerber wrote:
> >> Are you running different versions of the Linux kernel?
> >>
> >> I'm quite certain that the order the routes are added should have no weight on this matter. There is also another possibility. You might be renaming the interfaces differently that the order that they are loaded into the kernel as. Whichever interface was loaded first will have the smaller internal number, which is the one that would get selected first.
> >>
> >> Joel Gerber
> >> Network Specialist
> >> Network Operations
> >> Eastlink
> >> E: Joel.Gerber@corp.eastlink.ca T: 519.786.1241
> >>
> >> -----Original Message-----
> >> From: Ole Craig [mailto:olc@macmillan-craig.net]
> >> Sent: April-16-14 11:08 AM
> >> To: Joel Gerber
> >> Cc: lartc@vger.kernel.org
> >> Subject: RE: iproute2 does not select 1st default route in table?
> >>
> >> Hello Joel,
> >> There must be something else in play; we manage hundreds of other similar appliances and this is the only one that's exhibiting this behavior. ("similar" = "same hardware spec, same software spec, only the IPs are different" -- and yes, most of them have eth0 and eth1 sharing a subnet and gw, and eth1 is always the default route for packets not built with a specific source IP.)
> >>
> >> Thanks,
> >> Ole
> >>
> >> Joel Gerber <Joel.Gerber@corp.eastlink.ca> wrote:
> >>
> >> >Hello Ole;
> >> >
> >> >If you have multiple routes set with the same metric to the same destination, by default, the Linux kernel will choose the lowest numbered interface to use. This would be why eth0 is being hit every time. It has nothing to do with your ip rule definitions. If you wanted to prefer eth1, add a larger metric flag to the eth0 route, which will cause eth1 to be used instead. Then, only in the event that eth1 is link-down, will eth0 be used.
> >> >
> >> >You could also setup ECMP (Equal Cost Multi Path) which would allow you to load-balance traffic across both interfaces. To do this, add the equalize option to your 2 default routes when adding them. You might need to verify that you have multipath support baked into your kernel first.
> >> >
> >> >Joel Gerber
> >> >Network Specialist
> >> >Network Operations
> >> >Eastlink
> >> >E: Joel.Gerber@corp.eastlink.ca T: 519.786.1241
> >> >
> >> >-----Original Message-----
> >> >From: lartc-owner@vger.kernel.org [mailto:lartc-owner@vger.kernel.org] On Behalf Of Ole Craig
> >> >Sent: April-16-14 7:34 AM
> >> >To: lartc@vger.kernel.org
> >> >Subject: iproute2 does not select 1st default route in table?
> >> >
> >> >I am having the damnedest time with a dual-IP CentOS5-based appliance which seems to defy its iproute2 configuration, and I'm here hoping someone smarter than me (admittedly not a high bar) might be so kind as to tell me what I'm missing:
> >> > # ip route show table main
> >> > 10.1.1.1 dev tun0 proto kernel scope link src 10.1.1.7
> >> > 10.250.32.1 via 10.1.1.1 dev tun0
> >> > 10.250.10.0/24 via 10.1.1.1 dev tun0
> >> > 192.168.25.0/24 dev eth0 proto kernel scope link src 192.168.25.124
> >> > 192.168.25.0/24 dev eth1 proto kernel scope link src 192.168.25.100
> >> > default via 192.168.25.1 dev eth1
> >> > default via 192.168.25.1 dev eth0
> >> > # ip route get 8.8.8.8
> >> > 8.8.8.8 via 192.168.25.1 dev eth0 src 192.168.25.124
> >> > cache mtu 1500 advmss 1460 hoplimit 64
> >> >
> >> >I have been playing with this box for several days, and no matter what I do (including reboots) it wants to route almost everything out eth0 instead of eth1, despite the ordering of default routes shown above which should see eth1 taking precedence. No iptables PREROUTING/nat/mangle/raw stuff, this is all straight iproute2.
> >> >
> >> >I determined that the 'main' table was the one at issue by inserting and removing an overriding rule at various priorities to see when 'ip get'
> >> >would change behavior:
> >> > # ip rule show | tail
> >> > 32758: from all to 192.168.72.0/24 lookup defroutes
> >> > 32759: from 192.168.72.0/24 lookup defroutes
> >> > 32760: from 192.168.72.0/24 lookup mgtroutes
> >> > 32766: from all lookup main
> >> > 32767: from all lookup default
> >> > # ip route add table custom to 8.8.8.0/24 via 192.168.72.1 dev eth1 src 192.168.72.100
> >> > # for i in $(seq 32767 -1 32764); do ip rule add prio $i to 8.8.8.0/24 lookup custom; ip route flush cache; sleep 2; echo -en "$i:\t"; ip route get 8.8.8.8| head -1; ip rule del prio $i to 8.8.8.0/24 lookup custom; ip route flush cache; sleep 2; done
> >> > 32767: 8.8.8.8 via 192.168.72.1 dev eth0 src 192.168.72.124
> >> > 32766: 8.8.8.8 via 192.168.72.1 dev eth0 src 192.168.72.124
> >> > 32765: 8.8.8.8 via 192.168.72.1 dev eth1 src 192.168.72.100
> >> > 32764: 8.8.8.8 via 192.168.72.1 dev eth1 src 192.168.72.100
> >> >
> >> >Both interfaces are up, and are *able* to reach 8.8.8.8 via the upstream
> >> >gw:
> >> > # ping -c 1 -I eth0 8.8.8.8
> >> > PING 8.8.8.8 (8.8.8.8) from 192.168.72.124 eth0: 56(84) bytes of data.
> >> > 64 bytes from 8.8.8.8: icmp_seq=1 ttlG time\x14.9 ms
> >> >
> >> > --- 8.8.8.8 ping statistics ---
> >> > 1 packets transmitted, 1 received, 0% packet loss, time 0ms
> >> > rtt min/avg/max/mdev = 14.990/14.990/14.990/0.000 ms
> >> > # ping -c 1 -I eth1 8.8.8.8
> >> > PING 8.8.8.8 (8.8.8.8) from 192.168.72.100 eth1: 56(84) bytes of data.
> >> > 64 bytes from 8.8.8.8: icmp_seq=1 ttlG time\x14.9 ms
> >> >
> >> > --- 8.8.8.8 ping statistics ---
> >> > 1 packets transmitted, 1 received, 0% packet loss, time 0ms
> >> > rtt min/avg/max/mdev = 14.999/14.999/14.999/0.000 ms
> >> >
> >> >Can anyone help my figure out why this box (alone out of many, many appliances with similar configurations at various customer sites) is determined to reach out through eth0?
> >> >
> >> >The full RPDB ruleset:
> >> > # ip rule show
> >> > 0: from all lookup 255
> >> > 10: from all lookup bootstrap
> >> > 32736: from all to 128.119.40.1 lookup mgtroutes
> >> > 32737: from all to 192.168.126.228 lookup mgtroutes
> >> > 32738: from all to 192.168.76.232 lookup mgtroutes
> >> > 32739: from all to 192.168.90.112 lookup mgtroutes
> >> > 32740: from all to 192.168.61.112 lookup mgtroutes
> >> > 32741: from all to 192.168.76.232 lookup mgtroutes
> >> > 32742: from all to 192.168.61.112 lookup mgtroutes
> >> > 32743: from all to 192.168.34.35 lookup mgtroutes
> >> > 32744: from all to 192.168.61.112 lookup defroutes
> >> > 32745: from all to 192.168.134.47 lookup mgtroutes
> >> > 32746: from all to 192.168.127.68 lookup mgtroutes
> >> > 32747: from all to 192.168.66.6 lookup mgtroutes
> >> > 32748: from all to 192.168.126.228 lookup mgtroutes
> >> > 32749: from all to 192.168.127.68 lookup mgtroutes
> >> > 32750: from all to 192.168.134.41 lookup mgtroutes
> >> > 32751: from all to 192.168.134.41 lookup mgtroutes
> >> > 32752: from all to 192.168.76.232 lookup mgtroutes
> >> > 32753: from all to 107.23.15.175 lookup mgtroutes
> >> > 32754: from all to 216.87.69.94 lookup mgtroutes
> >> > 32755: from 192.168.72.124 lookup mgtroutes
> >> > 32756: from 192.168.72.100 lookup defroutes
> >> > 32757: from 192.168.72.0/24 to 192.168.72.0/24 lookup mgtroutes
> >> > 32758: from all to 192.168.72.0/24 lookup defroutes
> >> > 32759: from 192.168.72.0/24 lookup defroutes
> >> > 32760: from 192.168.72.0/24 lookup mgtroutes
> >> > 32766: from all lookup main
> >> > 32767: from all lookup default
> >> >
> >> >
> >> >
> >> > Thank you for any clue you can spare,
> >> > Ole
> >> >--
> >> >Ole Craig <olc@macmillan-craig.net>
> >> >
> >> >--
> >> >To unsubscribe from this list: send the line "unsubscribe lartc" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
> >> {.n++%ݶ w{.n+j\)w*jg ݢj
> > G
> > j:+vwjm wfh٥
> >
> >
>
>
>
^ permalink raw reply [flat|nested] 12+ messages in thread
* RE: iproute2 does not select 1st default route in table?
2014-04-16 11:34 iproute2 does not select 1st default route in table? Ole Craig
` (6 preceding siblings ...)
2014-05-13 23:35 ` Ole Craig
@ 2014-05-15 19:25 ` Joel Gerber
2014-05-16 20:27 ` Ole Craig
` (2 subsequent siblings)
10 siblings, 0 replies; 12+ messages in thread
From: Joel Gerber @ 2014-05-15 19:25 UTC (permalink / raw)
To: lartc
SSdtIGhvbmVzdGx5IHN0dW1wZWQgcmlnaHQgbm93LiBZb3VyIHJvdXRlIGNhY2hlIGlzIGdldHRp
bmcgcG9wdWxhdGVkIHdpdGggYSByb3V0ZSB0aGF0IHlvdXIgaXAgcm91dGUgc2hvdyBtYXRjaCBj
b21tYW5kIGRpc2FncmVlcyB3aXRoLiBZb3VyIGRldmlhbnQgYm94IGlzIHF1aXRlIGRldmlhbnQu
DQoNCllvdSBoYXZlIHNvbWUgaXAgcnVsZXMgbGlzdGVkLCByaWdodD8gQ291bGQgeW91IGdpdmUg
bWUgYGlwIHJ1bGUgbHNgIGFzIHdlbGwgYXMgYGlwIHJvdXRlIGxzIHRhYmxlIHhgIHdoZXJlIHgg
aXMgYWxsIHRhYmxlcyByZWZlcmVuY2VkIGJ5IGBpcCBydWxlIGxzYCBleGNlcHQgZm9yIGRlZmF1
bHQgYW5kIGxvY2FsPw0KDQpKb2VsIEdlcmJlcg0KTmV0d29yayBTcGVjaWFsaXN0DQpOZXR3b3Jr
IE9wZXJhdGlvbnMNCkVhc3RsaW5rDQpFOiBKb2VsLkdlcmJlckBjb3JwLmVhc3RsaW5rLmNhIFQ6
IDUxOS43ODYuMTI0MQ0KLS0tLS1PcmlnaW5hbCBNZXNzYWdlLS0tLS0NCkZyb206IE9sZSBDcmFp
ZyBbbWFpbHRvOm9sY0BtYWNtaWxsYW4tY3JhaWcubmV0XQ0KU2VudDogTWF5LTEzLTE0IDc6MzUg
UE0NClRvOiBBbnRvbiBEYW5pbG92DQpDYzogSm9lbCBHZXJiZXI7IGxhcnRjQHZnZXIua2VybmVs
Lm9yZw0KU3ViamVjdDogUmU6IGlwcm91dGUyIGRvZXMgbm90IHNlbGVjdCAxc3QgZGVmYXVsdCBy
b3V0ZSBpbiB0YWJsZT8NCg0KQW50b24sIEpvZWwgLQ0KICAgIEhlcmUncyB0aGUgb3V0cHV0IG9m
IGlwIHJvdXRlIHNob3cgY2FjaGUgOC44LjguOCwgaXAgcm91dGUgc2hvdw0KbWF0Y2ggOC44Ljgu
OCwgYW5kIGlwIHJvdXRlIGdldCA4LjguOC44DQoNCi4uLm9uIERldmlhbnQ6DQogICAgICAgIFty
b290QGR2bnQgfl0jIGlwIHJvdXRlIHNob3cgY2FjaGUgOC44LjguOA0KICAgICAgICA4LjguOC44
IHZpYSAxOTIuMTY4LjcyLjEgZGV2IGV0aDAgIHNyYyAxOTIuMTY4LjcyLjEyNA0KICAgICAgICAg
ICAgY2FjaGUgIG10dSAxNTAwIGFkdm1zcyAxNDYwIGhvcGxpbWl0IDY0DQogICAgICAgIDguOC44
LjggZnJvbSAxOTIuMTY4LjcyLjEyNCB2aWEgMTkyLjE2OC43Mi4xIGRldiBldGgwDQogICAgICAg
ICAgICBjYWNoZSAgbXR1IDE1MDAgYWR2bXNzIDE0NjAgaG9wbGltaXQgNjQNCiAgICAgICAgW3Jv
b3RAZHZudCB+XSMgaXAgcm91dGUgc2hvdyBtYXRjaCA4LjguOC44DQogICAgICAgIGRlZmF1bHQg
dmlhIDE5Mi4xNjguNzIuMSBkZXYgZXRoMQ0KICAgICAgICBkZWZhdWx0IHZpYSAxOTIuMTY4Ljcy
LjEgZGV2IGV0aDANCiAgICAgICAgW3Jvb3RAZHZudCB+XSMgaXAgcm91dGUgZ2V0IDguOC44LjgN
CiAgICAgICAgOC44LjguOCB2aWEgMTkyLjE2OC43Mi4xIGRldiBldGgwICBzcmMgMTkyLjE2OC43
Mi4xMjQNCiAgICAgICAgICAgIGNhY2hlICBtdHUgMTUwMCBhZHZtc3MgMTQ2MCBob3BsaW1pdCA2
NA0KDQouLi5vbiBOb3JtOg0KICAgICAgICBbcm9vdEBub3JtIH5dIyBpcCByb3V0ZSBzaG93IGNh
Y2hlIDguOC44LjgNCiAgICAgICAgOC44LjguOCB2aWEgMTkyLjE2OC43Mi4xIGRldiBldGgxICBz
cmMgMTkyLjE2OC43Mi45OQ0KICAgICAgICAgICAgY2FjaGUgIG10dSAxNTAwIGFkdm1zcyAxNDYw
IGhvcGxpbWl0IDY0DQogICAgICAgIDguOC44LjggZnJvbSAxOTIuMTY4LjcyLjk5IHZpYSAxOTIu
MTY4LjcyLjEgZGV2IGV0aDENCiAgICAgICAgICAgIGNhY2hlICBtdHUgMTUwMCBhZHZtc3MgMTQ2
MCBob3BsaW1pdCA2NA0KICAgICAgICBbcm9vdEBub3JtIH5dIyAgaXAgcm91dGUgc2hvdyBtYXRj
aCA4LjguOC44DQogICAgICAgIGRlZmF1bHQgdmlhIDE5Mi4xNjguNzIuMSBkZXYgZXRoMQ0KICAg
ICAgICBkZWZhdWx0IHZpYSAxOTIuMTY4LjcyLjEgZGV2IGV0aDANCiAgICAgICAgW3Jvb3RAbm9y
bSB+XSMgaXAgcm91dGUgZ2V0IDguOC44LjgNCiAgICAgICAgOC44LjguOCB2aWEgMTkyLjE2OC43
Mi4xIGRldiBldGgxICBzcmMgMTkyLjE2OC43Mi45OQ0KICAgICAgICAgICAgY2FjaGUgIG10dSAx
NTAwIGFkdm1zcyAxNDYwIGhvcGxpbWl0IDY0DQoNCg0KICAgICAgICBUaGFua3MsDQogICAgICAg
ICAgICAgICAgT2xlDQoNCk9uIFR1ZSwgMjAxNC0wNS0xMyBhdCAwMDowNSArMDQwMCwgQW50b24g
RGFuaWxvdiB3cm90ZToNCj4gSGksIEpvZWwuDQo+IFBsZWFzZSB1c2UgJ2lwIHJvdXRlIGdldCcg
YW5kICdpcCByb3V0ZSBzaG93IG1hdGNoJyBjb21tYW5kcyBmb3INCj4gdHJvdWJsZXNob290aW5n
IG9mIHJvdXRlIHNlbGVjdGlvbi4NCj4gU29tZSBleGFtcGxlczoNCj4gaXAgcm91dGUgZ2V0IDxk
c3Q+IGZyb20gPHNyYz4gaWlmIDxsYW4taWZhY2U+IC0gc2hvdyByb3V0ZSBmb3IgdHJhbnNpdA0K
PiBwYWNrZXRzIChub3QgbG9jYWwtb3JpZ2luYXRlZCkuDQo+IGlwIHJvdXRlIHNob3cgbWF0Y2gg
PHByZWZpeD4gLSBzaG93IGFsbCBtYXRoZWQgcm91dGVzICh3aXRoIGRpZmZlcmVudA0KPiBwcmVm
aXggbGVuZ3RoKS4NCj4NCj4gMjAxNC0wNS0xMiAxNTo1MiBHTVQrMDQ6MDAgSm9lbCBHZXJiZXIg
PEpvZWwuR2VyYmVyQGNvcnAuZWFzdGxpbmsuY2E+Og0KPiA+IEknbSBnZXR0aW5nIGNvbmZ1c2Vk
IG5vdy4gSSBkaWQgc29tZSBvbmxpbmUgcmVhZGluZywgYW5kIEkndmUgZm91bmQgdGhlIGZvbGxv
d2luZzoNCj4gPg0KPiA+IElmIHNldmVyYWwgcm91dGVzIG1hdGNoIHRoZSBwYWNrZXQsIHRoZSBm
b2xsb3dpbmcgcHJ1bmluZyBydWxlcyBhcmUgdXNlZCB0byBzZWxlY3QgdGhlIGJlc3Qgb25lOg0K
PiA+DQo+ID4gICAgMS4gVGhlIGxvbmdlc3QgbWF0Y2hpbmcgcHJlZml4IGlzIHNlbGVjdGVkOyBh
bGwgc2hvcnRlciBvbmVzIGFyZSBkcm9wcGVkLg0KPiA+ICAgIDIuIElmIHRoZSBUT1Mgb2Ygc29t
ZSByb3V0ZSB3aXRoIHRoZSBsb25nZXN0IHByZWZpeCBpcyBlcXVhbCB0byB0aGUgVE9TIG9mIHRo
ZSBwYWNrZXQsIHJvdXRlcyB3aXRoIGRpZmZlcmVudCBUT1MgYXJlIGRyb3BwZWQuDQo+ID4gICAg
My4gSWYgbm8gZXhhY3QgVE9TIG1hdGNoIGlzIGZvdW5kIGFuZCByb3V0ZXMgd2l0aCBUT1M9MCBl
eGlzdCwgdGhlIHJlc3Qgb2YgdGhlIHJvdXRlcyBhcmUgcHJ1bmVkLiBPdGhlcndpc2UgdGhlIHJv
dXRlIGxvb2t1cCBmYWlscy4NCj4gPiAgICA0LiBJZiBzZXZlcmFsIHJvdXRlcyByZW1haW4gYWZ0
ZXIgc3RlcHMgMS0zIGhhdmUgYmVlbiB0cmllZCwgdGhlbiByb3V0ZXMgd2l0aCB0aGUgYmVzdCBw
cmVmZXJlbmNlIHZhbHVlIGFyZSBzZWxlY3RlZC4NCj4gPiAgICA1LiBJZiBzZXZlcmFsIHJvdXRl
cyBzdGlsbCBleGlzdCwgdGhlbiB0aGUgZmlyc3Qgb2YgdGhlbSBpcyBzZWxlY3RlZC4NCj4gPg0K
PiA+IGh0dHA6Ly93d3cuc29mdHBhbm9yYW1hLm9yZy9OZXQvSW50ZXJuZXRfbGF5ZXIvUm91dGlu
Zy9wb2xpY3lfcm91dGluZy5zaHRtbA0KPiA+DQo+ID4gSSdtIGhhdmluZyBhIGhhcmQgdGltZSBm
aW5kaW5nIGFueXRoaW5nIG1vcmUgb2ZmaWNpYWwgdGhhdCBzdGF0ZXMgdGhpcywgYW5kIHdpdGhv
dXQgbG9va2luZyBhdCB0aGUga2VybmVsIHNvdXJjZSBjb2RlIEkgY2FuJ3QgYmUgMTAwJSBjZXJ0
YWluLCBidXQgaXQgc2VlbXMgdGhhdCB0aGUgZmlyc3Qgcm91dGUgbGlzdGVkIHNob3VsZCBiZSBz
ZWxlY3RlZCwgd2hlbiB0aGVyZSBhcmUgbXVsdGlwbGUgbWF0Y2hlcy4NCj4gPg0KPiA+IEhlcmUn
cyBzb21ldGhpbmcgZWxzZSB0byB0cnksIHJ1biB0aGUgY29tbWFuZCAiaXAgcm91dGUgc2hvdyBj
YWNoZSIgYW5kIHBhc3RlIHRoZSBjb250ZW50cyBoZXJlLiBBcyB0aGUgY2FjaGUgaXMgdGhlIGZp
cnN0IHRoaW5nIHF1ZXJpZWQgYmVmb3JlIGxvb2tpbmcgYXQgeW91ciByb3V0aW5nIGxpc3QsIEkn
bSBjdXJpb3VzIHRvIHNlZSB3aGF0IGl0IHNob3dzLg0KPiA+DQo+ID4gSm9lbCBHZXJiZXINCj4g
PiBOZXR3b3JrIFNwZWNpYWxpc3QNCj4gPiBOZXR3b3JrIE9wZXJhdGlvbnMNCj4gPiBFYXN0bGlu
aw0KPiA+IEU6IEpvZWwuR2VyYmVyQGNvcnAuZWFzdGxpbmsuY2EgVDogNTE5Ljc4Ni4xMjQxDQo+
ID4gLS0tLS1PcmlnaW5hbCBNZXNzYWdlLS0tLS0NCj4gPiBGcm9tOiBPbGUgQ3JhaWcgW21haWx0
bzpvbGNAbWFjbWlsbGFuLWNyYWlnLm5ldF0NCj4gPiBTZW50OiBNYXktMDktMTQgNDoxNCBQTQ0K
PiA+IFRvOiBKb2VsIEdlcmJlcg0KPiA+IENjOiBsYXJ0Y0B2Z2VyLmtlcm5lbC5vcmcNCj4gPiBT
dWJqZWN0OiBSZTogaXByb3V0ZTIgZG9lcyBub3Qgc2VsZWN0IDFzdCBkZWZhdWx0IHJvdXRlIGlu
IHRhYmxlPw0KPiA+DQo+ID4gSm9lbCwgZXQgYWwgLQ0KPiA+ICAgICAgICAgVEw7RFI6IGJlaGF2
aW9yIGF0IGlzc3VlIGRpZmZlcnMgYmV0d2VlbiAyIGJveGVzIHdoaWNoIGFyZSAxIElQDQo+ID4g
ICAgICAgICBhZGRyZXNzIGFwYXJ0IHdpdGggaWRlbnRpY2FsIGh3L3N3IGxvYWRzOyBzYW1lIGtl
cm5lbDsgaW50ZXJmYWNlDQo+ID4gICAgICAgICBudW1iZXJpbmcgdW5jaGFuZ2VkIGFmdGVyIGtl
cm5lbCBwcm9iaW5nLiBXaGF0IGdpdmVzPyBXaGF0IGFtIEkNCj4gPiAgICAgICAgIG1pc3Npbmc/
DQo+ID4NCj4gPiAoQXBvbG9naWVzIGZvciB0aGUgZGVsYXllZCByZXNwb25zZSwgbGlmZSBhcm91
bmQgaGVyZSBoYXMgYmVlbiBmcmFudGljDQo+ID4gYW5kIHRoaXMgaGFzIGJlZW4gc2l0dGluZyBh
cm91bmQgaGFsZi1jb21wb3NlZCBpbiBteSBtYWlsIGNsaWVudC4pDQo+ID4NCj4gPiBEZXRhaWxz
Og0KPiA+ICAgICBPaywgSSBoYXZlIHR3byBkdWFsLWludGVyZmFjZSBib3hlcyBzaXR0aW5nIG5l
eHQgdG8gZWFjaCBvdGhlciBvbg0KPiA+IHRoaXMgY3VzdG9tZXIncyBuZXR3b3JrLiBUaGUgZmly
c3QgYm94IGlzIHRoZSBvbmUgd2UndmUgYmVlbiBkaXNjdXNzaW5nLA0KPiA+IEknbGwgY2FsbCBo
aW0gIkRldmlhbnQiIGZyb20gbm93IG9uLiBUaGUgc2Vjb25kIGJveCAoaGVyZWluYWZ0ZXIgIk5v
cm0iKQ0KPiA+IGlzIGFjdGluZyBqdXN0IGxpa2UgdGhlIHJlc3Qgb2YgdGhlIGFwcGxpYW5jZXMg
aW4gb3VyIGZsZWV0LCBpLmUuDQo+ID4gcm91dGluZyBvdXQgZXRoMSBieSBkZWZhdWx0LiBIb3Bp
bmcgdGhhdCBjb21wYXJpbmcgdGhlc2UgdHdvICh3aGljaCBhcmUNCj4gPiBpZGVudGljYWwgV1JU
IGJvdGggaGFyZHdhcmUgYW5kIHNvZnR3YXJlIGNvbmZpZyopIGNhbiBsZWFkIHRvIGEgbW9yZQ0K
PiA+IGluZm9ybWVkL3ByZWNpc2UgY29uY2x1c2lvbiBhcyB0byB3aGF0J3MgY2F1c2luZyB0aGVt
IHRvIGJlaGF2ZQ0KPiA+IGRpZmZlcmVudGx5IChhbmQgbWF5YmUgc29tZSBpZGVhcyBmb3IgcmUt
bm9ybWluZyBEZXZpYW50OyBhcmJpdHJhcnkNCj4gPiByb3V0aW5nIGlzIE5vdCBNeSBLaW5rLjop
DQo+ID4NCj4gPiBrZXJuZWwgaW5zZXJ0aW9uIG9yZGVyIG9uIERldmlhbnQ6DQo+ID4gICAgICAg
ICBbcm9vdEBkdm50IH5dIyB1bmFtZSAtYQ0KPiA+ICAgICAgICAgTGludXggZHZudC5leGFtcGxl
LmNvbSAyLjYuMTgtMzQ4LjQuMS5lbDUgIzEgU01QIFR1ZSBBcHIgMTYgMTU6NDA6MDYgRURUIDIw
MTMgeDg2XzY0IHg4Nl82NCB4ODZfNjQgR05VL0xpbnV4DQo+ID4gICAgICAgICBbcm9vdEBkdm50
IH5dIyBkbWVzZyB8IGVncmVwICdldGguOiBcKCcNCj4gPiAgICAgICAgIGlnYiAwMDAwOjAxOjAw
LjA6IGV0aDA6IChQQ0llOjIuNUdiL3M6V2lkdGggeDQpDQo+ID4gICAgICAgICAwMDoyNTo5MDoz
MDoyODo2Yw0KPiA+ICAgICAgICAgaWdiIDAwMDA6MDE6MDAuMTogZXRoMTogKFBDSWU6Mi41R2Iv
czpXaWR0aCB4NCkNCj4gPiAgICAgICAgIDAwOjI1OjkwOjMwOjI4OjZkDQo+ID4gZGV2aWNlPC0t
PmFkZHJlc3MgbWFwcGluZyBvbiBEZXZpYW50Og0KPiA+ICAgICAgICAgW3Jvb3RAZHZudCB+XSMg
aXAgbGluayBzaG93DQo+ID4gICAgICAgICAxOiBsbzogPExPT1BCQUNLLFVQLExPV0VSX1VQPiBt
dHUgMTY0MzYgcWRpc2Mgbm9xdWV1ZQ0KPiA+ICAgICAgICAgICAgIGxpbmsvbG9vcGJhY2sgMDA6
MDA6MDA6MDA6MDA6MDAgYnJkIDAwOjAwOjAwOjAwOjAwOjAwDQo+ID4gICAgICAgICAyOiBldGgw
OiA8QlJPQURDQVNULE1VTFRJQ0FTVCxVUCxMT1dFUl9VUD4gbXR1IDE1MDAgcWRpc2MNCj4gPiAg
ICAgICAgIHBmaWZvX2Zhc3QgcWxlbiAxMDAwDQo+ID4gICAgICAgICAgICAgbGluay9ldGhlciAw
MDoyNTo5MDozMDoyODo2YyBicmQgZmY6ZmY6ZmY6ZmY6ZmY6ZmYNCj4gPiAgICAgICAgIDM6IGV0
aDE6IDxCUk9BRENBU1QsTVVMVElDQVNULFVQLExPV0VSX1VQPiBtdHUgMTUwMCBxZGlzYw0KPiA+
ICAgICAgICAgcGZpZm9fZmFzdCBxbGVuIDEwMDANCj4gPiAgICAgICAgICAgICBsaW5rL2V0aGVy
IDAwOjI1OjkwOjMwOjI4OjZkIGJyZCBmZjpmZjpmZjpmZjpmZjpmZg0KPiA+IExpbmsgc3RhdHVz
IG9uIERldmlhbnQ6DQo+ID4gICAgICAgICBbcm9vdEBkdm50IH5dIyBmb3IgaSBpbiAwIDE7IGRv
IGVjaG8gLW4gImV0aCRpOiAiOyBldGh0b29sIGV0aCRpIHwgZ3JlcCBMaW5rOyBkb25lDQo+ID4g
ICAgICAgICBldGgwOiAgIExpbmsgZGV0ZWN0ZWQ6IHllcw0KPiA+ICAgICAgICAgZXRoMTogICBM
aW5rIGRldGVjdGVkOiB5ZXMNCj4gPg0KPiA+DQo+ID4ga2VybmVsIGluc2VydGlvbiBvcmRlciBv
biBOb3JtOg0KPiA+ICAgICAgICAgW3Jvb3RAbm9ybSB+XSMgdW5hbWUgLWENCj4gPiAgICAgICAg
IExpbnV4IG5vcm0uZXhhbXBsZS5jb20gMi42LjE4LTM0OC40LjEuZWw1ICMxIFNNUCBUdWUgQXBy
IDE2IDE1OjQwOjA2IEVEVCAyMDEzIHg4Nl82NCB4ODZfNjQgeDg2XzY0IEdOVS9MaW51eA0KPiA+
ICAgICAgICAgW3Jvb3RAbm9ybSB+XSMgZG1lc2cgfCBlZ3JlcCAnZXRoLjogXCgnDQo+ID4gICAg
ICAgICBpZ2IgMDAwMDowMTowMC4wOiBldGgwOiAoUENJZToyLjVHYi9zOldpZHRoIHg0KSAwMDoy
NTo5MDozMDoyYzpmOA0KPiA+ICAgICAgICAgaWdiIDAwMDA6MDE6MDAuMTogZXRoMTogKFBDSWU6
Mi41R2IvczpXaWR0aCB4NCkgMDA6MjU6OTA6MzA6MmM6ZjkNCj4gPiBkZXZpY2U8LS0+YWRkcmVz
cyBtYXAgb24gTm9ybToNCj4gPiAgICAgICAgIFtyb290QG5vcm0gfl0jIGlwIGxpbmsgc2hvdw0K
PiA+ICAgICAgICAgMTogbG86IDxMT09QQkFDSyxVUCxMT1dFUl9VUD4gbXR1IDE2NDM2IHFkaXNj
IG5vcXVldWUNCj4gPiAgICAgICAgICAgICBsaW5rL2xvb3BiYWNrIDAwOjAwOjAwOjAwOjAwOjAw
IGJyZCAwMDowMDowMDowMDowMDowMA0KPiA+ICAgICAgICAgMjogZXRoMDogPEJST0FEQ0FTVCxN
VUxUSUNBU1QsVVAsTE9XRVJfVVA+IG10dSAxNTAwIHFkaXNjIHBmaWZvX2Zhc3QgcWxlbiAxMDAw
DQo+ID4gICAgICAgICAgICAgbGluay9ldGhlciAwMDoyNTo5MDozMDoyYzpmOCBicmQgZmY6ZmY6
ZmY6ZmY6ZmY6ZmYNCj4gPiAgICAgICAgIDM6IGV0aDE6IDxCUk9BRENBU1QsTVVMVElDQVNULFVQ
LExPV0VSX1VQPiBtdHUgMTUwMCBxZGlzYyBwZmlmb19mYXN0IHFsZW4gMTAwMA0KPiA+ICAgICAg
ICAgICAgIGxpbmsvZXRoZXIgMDA6MjU6OTA6MzA6MmM6ZjkgYnJkIGZmOmZmOmZmOmZmOmZmOmZm
DQo+ID4gTGluayBzdGF0dXMgb24gTm9ybToNCj4gPiAgICAgICAgIFtyb290QG5vcm0gfl0jIGZv
ciBpIGluIDAgMTsgZG8gZWNobyAtbiAiZXRoJGk6ICI7IGV0aHRvb2wgZXRoJGkgfCBncmVwIExp
bms7IGRvbmUNCj4gPiAgICAgICAgIGV0aDA6ICAgTGluayBkZXRlY3RlZDogeWVzDQo+ID4gICAg
ICAgICBldGgxOiAgIExpbmsgZGV0ZWN0ZWQ6IHllcw0KPiA+DQo+ID4NCj4gPiBTbywgd2UgY2Fu
IHNlZSB0aGF0IGluIGJvdGggY2FzZXMgdGhlIGRldmljZSBvcmRlcmluZyBpcyB1bmNoYW5nZWQg
ZnJvbQ0KPiA+IHRoYXQgd2hpY2ggd2FzIGRpc2NvdmVyZWQgYXQgYm9vdCBieSB0aGUga2VybmVs
LCBhbmQgdGhhdCBldGgwIHdhcw0KPiA+IHByb2JlZCBmaXJzdC4NCj4gPg0KPiA+IEFuZCBoZXJl
IGFnYWluIGZvciBwb3N0ZXJpdHkgaXMgdGhlIGFjdGl2ZSByb3V0aW5nIHRhYmxlIGFuZCByZXN1
bHRzIG9mDQo+ID4gImlwIHJvdXRlIGdldCIgb24gZWFjaCBtYWNoaW5lOg0KPiA+DQo+ID4gRGV2
aWFudDoNCj4gPiAgICAgICAgIFtyb290QGR2bnQgfl0jIGlwIHJvdXRlIHNob3cgdGFibGUgbWFp
bg0KPiA+ICAgICAgICAgMTAuMS4xLjEgZGV2IHR1bjAgIHByb3RvIGtlcm5lbCAgc2NvcGUgbGlu
ayAgc3JjIDEwLjEuMS43DQo+ID4gICAgICAgICAxMC4yNTAuMzIuMSB2aWEgMTAuMS4xLjEgZGV2
IHR1bjANCj4gPiAgICAgICAgIDEwLjI1MC4xMC4wLzI0IHZpYSAxMC4xLjEuMSBkZXYgdHVuMA0K
PiA+ICAgICAgICAgMTkyLjE2OC43Mi4wLzI0IGRldiBldGgwICBwcm90byBrZXJuZWwgIHNjb3Bl
IGxpbmsgIHNyYyAxOTIuMTY4LjcyLjEyNA0KPiA+ICAgICAgICAgMTkyLjE2OC43Mi4wLzI0IGRl
diBldGgxICBwcm90byBrZXJuZWwgIHNjb3BlIGxpbmsgIHNyYyAxOTIuMTY4LjcyLjEwMA0KPiA+
ICAgICAgICAgZGVmYXVsdCB2aWEgMTkyLjE2OC43Mi4xIGRldiBldGgxDQo+ID4gICAgICAgICBk
ZWZhdWx0IHZpYSAxOTIuMTY4LjcyLjEgZGV2IGV0aDANCj4gPiAgICAgICAgIFtyb290QGR2bnQg
fl0jIGlwIHJvdXRlIGdldCA4LjguOC44IHwgc2FuaXplDQo+ID4gICAgICAgICA4LjguOC44IHZp
YSAxOTIuMTY4LjcyLjEgZGV2IGV0aDAgIHNyYyAxOTIuMTY4LjcyLjEyNA0KPiA+ICAgICAgICAg
ICAgIGNhY2hlICBtdHUgMTUwMCBhZHZtc3MgMTQ2MCBob3BsaW1pdCA2NA0KPiA+DQo+ID4gTm9y
bToNCj4gPiAgICAgICAgIFtyb290QG5vcm0gfl0jIGlwIHJvdXRlIHNob3cgdGFibGUgbWFpbg0K
PiA+ICAgICAgICAgMTAuMS4xLjEgZGV2IHR1bjAgIHByb3RvIGtlcm5lbCAgc2NvcGUgbGluayAg
c3JjIDEwLjEuMS40NQ0KPiA+ICAgICAgICAgMTAuMjUwLjMyLjEgdmlhIDEwLjEuMS4xIGRldiB0
dW4wDQo+ID4gICAgICAgICAxMC4yNTAuMTAuMC8yNCB2aWEgMTAuMS4xLjEgZGV2IHR1bjANCj4g
PiAgICAgICAgIDE5Mi4xNjguNzIuMC8yNCBkZXYgZXRoMCAgcHJvdG8ga2VybmVsICBzY29wZSBs
aW5rICBzcmMgMTkyLjE2OC43Mi4xMjMNCj4gPiAgICAgICAgIDE5Mi4xNjguNzIuMC8yNCBkZXYg
ZXRoMSAgcHJvdG8ga2VybmVsICBzY29wZSBsaW5rICBzcmMgMTkyLjE2OC43Mi45OQ0KPiA+ICAg
ICAgICAgZGVmYXVsdCB2aWEgMTkyLjE2OC43Mi4xIGRldiBldGgxDQo+ID4gICAgICAgICBkZWZh
dWx0IHZpYSAxOTIuMTY4LjcyLjEgZGV2IGV0aDANCj4gPiAgICAgICAgIFtyb290QG5vcm0gfl0j
IGlwIHJvdXRlIGdldCA4LjguOC44DQo+ID4gICAgICAgICA4LjguOC44IHZpYSAxOTIuMTY4Ljcy
LjEgZGV2IGV0aDEgIHNyYyAxOTIuMTY4LjcyLjk5DQo+ID4gICAgICAgICAgICAgY2FjaGUgIG10
dSAxNTAwIGFkdm1zcyAxNDYwIGhvcGxpbWl0IDY0DQo+ID4NCj4gPg0KPiA+IEFueSB0aG91Z2h0
cyBhcyB0byB3aGF0IGVsc2UgbWlnaHQgYmUgZ29pbmcgb24/DQo+ID4NCj4gPiBPbGUNCj4gPg0K
PiA+ICoiaWRlbnRpY2FsWy4uLl1ody9zdyBjb25maWciIC0tIGdyYW50ZWQgdGhlcmUgYXJlIGRp
ZmZlcmVuY2VzIGluDQo+ID4gYXBwbGljYXRpb24gY29uZmlndXJhdGlvbiAobGF5ZXJzIDUtNykg
YnV0IG5vdGhpbmcgdGhhdCBzaG91bGQgY29tZQ0KPiA+IGNsb3NlIHRvIGFmZmVjdGluZyByb3V0
aW5nLg0KPiA+IC0tDQo+ID4gT2xlIENyYWlnIDxvbGNAbWFjbWlsbGFuLWNyYWlnLm5ldD4NCj4g
Pg0KPiA+IE9uIFdlZCwgMjAxNC0wNC0xNiBhdCAxNjo1MSAtMDMwMCwgSm9lbCBHZXJiZXIgd3Jv
dGU6DQo+ID4+IEFyZSB5b3UgcnVubmluZyBkaWZmZXJlbnQgdmVyc2lvbnMgb2YgdGhlIExpbnV4
IGtlcm5lbD8NCj4gPj4NCj4gPj4gSSdtIHF1aXRlIGNlcnRhaW4gdGhhdCB0aGUgb3JkZXIgdGhl
IHJvdXRlcyBhcmUgYWRkZWQgc2hvdWxkIGhhdmUgbm8gd2VpZ2h0IG9uIHRoaXMgbWF0dGVyLiBU
aGVyZSBpcyBhbHNvIGFub3RoZXIgcG9zc2liaWxpdHkuIFlvdSBtaWdodCBiZSByZW5hbWluZyB0
aGUgaW50ZXJmYWNlcyBkaWZmZXJlbnRseSB0aGF0IHRoZSBvcmRlciB0aGF0IHRoZXkgYXJlIGxv
YWRlZCBpbnRvIHRoZSBrZXJuZWwgYXMuIFdoaWNoZXZlciBpbnRlcmZhY2Ugd2FzIGxvYWRlZCBm
aXJzdCB3aWxsIGhhdmUgdGhlIHNtYWxsZXIgaW50ZXJuYWwgbnVtYmVyLCB3aGljaCBpcyB0aGUg
b25lIHRoYXQgd291bGQgZ2V0IHNlbGVjdGVkIGZpcnN0Lg0KPiA+Pg0KPiA+PiBKb2VsIEdlcmJl
cg0KPiA+PiBOZXR3b3JrIFNwZWNpYWxpc3QNCj4gPj4gTmV0d29yayBPcGVyYXRpb25zDQo+ID4+
IEVhc3RsaW5rDQo+ID4+IEU6IEpvZWwuR2VyYmVyQGNvcnAuZWFzdGxpbmsuY2EgVDogNTE5Ljc4
Ni4xMjQxDQo+ID4+DQo+ID4+IC0tLS0tT3JpZ2luYWwgTWVzc2FnZS0tLS0tDQo+ID4+IEZyb206
IE9sZSBDcmFpZyBbbWFpbHRvOm9sY0BtYWNtaWxsYW4tY3JhaWcubmV0XQ0KPiA+PiBTZW50OiBB
cHJpbC0xNi0xNCAxMTowOCBBTQ0KPiA+PiBUbzogSm9lbCBHZXJiZXINCj4gPj4gQ2M6IGxhcnRj
QHZnZXIua2VybmVsLm9yZw0KPiA+PiBTdWJqZWN0OiBSRTogaXByb3V0ZTIgZG9lcyBub3Qgc2Vs
ZWN0IDFzdCBkZWZhdWx0IHJvdXRlIGluIHRhYmxlPw0KPiA+Pg0KPiA+PiBIZWxsbyBKb2VsLA0K
PiA+PiBUaGVyZSBtdXN0IGJlIHNvbWV0aGluZyBlbHNlIGluIHBsYXk7IHdlIG1hbmFnZSBodW5k
cmVkcyBvZiBvdGhlciBzaW1pbGFyIGFwcGxpYW5jZXMgYW5kIHRoaXMgaXMgdGhlIG9ubHkgb25l
IHRoYXQncyBleGhpYml0aW5nIHRoaXMgYmVoYXZpb3IuICgic2ltaWxhciIgPT0gInNhbWUgaGFy
ZHdhcmUgc3BlYywgc2FtZSBzb2Z0d2FyZSBzcGVjLCBvbmx5IHRoZSBJUHMgYXJlIGRpZmZlcmVu
dCIgLS0gYW5kIHllcywgbW9zdCBvZiB0aGVtIGhhdmUgZXRoMCBhbmQgZXRoMSBzaGFyaW5nIGEg
c3VibmV0IGFuZCBndywgYW5kIGV0aDEgaXMgYWx3YXlzIHRoZSBkZWZhdWx0IHJvdXRlIGZvciBw
YWNrZXRzIG5vdCBidWlsdCB3aXRoIGEgc3BlY2lmaWMgc291cmNlIElQLikNCj4gPj4NCj4gPj4g
VGhhbmtzLA0KPiA+PiAgICAgT2xlDQo+ID4+DQo+ID4+IEpvZWwgR2VyYmVyIDxKb2VsLkdlcmJl
ckBjb3JwLmVhc3RsaW5rLmNhPiB3cm90ZToNCj4gPj4NCj4gPj4gPkhlbGxvIE9sZTsNCj4gPj4g
Pg0KPiA+PiA+SWYgeW91IGhhdmUgbXVsdGlwbGUgcm91dGVzIHNldCB3aXRoIHRoZSBzYW1lIG1l
dHJpYyB0byB0aGUgc2FtZSBkZXN0aW5hdGlvbiwgYnkgZGVmYXVsdCwgdGhlIExpbnV4IGtlcm5l
bCB3aWxsIGNob29zZSB0aGUgbG93ZXN0IG51bWJlcmVkIGludGVyZmFjZSB0byB1c2UuIFRoaXMg
d291bGQgYmUgd2h5IGV0aDAgaXMgYmVpbmcgaGl0IGV2ZXJ5IHRpbWUuIEl0IGhhcyBub3RoaW5n
IHRvIGRvIHdpdGggeW91ciBpcCBydWxlIGRlZmluaXRpb25zLiBJZiB5b3Ugd2FudGVkIHRvIHBy
ZWZlciBldGgxLCBhZGQgYSBsYXJnZXIgbWV0cmljIGZsYWcgdG8gdGhlIGV0aDAgcm91dGUsIHdo
aWNoIHdpbGwgY2F1c2UgZXRoMSB0byBiZSB1c2VkIGluc3RlYWQuIFRoZW4sIG9ubHkgaW4gdGhl
IGV2ZW50IHRoYXQgZXRoMSBpcyBsaW5rLWRvd24sIHdpbGwgZXRoMCBiZSB1c2VkLg0KPiA+PiA+
DQo+ID4+ID5Zb3UgY291bGQgYWxzbyBzZXR1cCBFQ01QIChFcXVhbCBDb3N0IE11bHRpIFBhdGgp
IHdoaWNoIHdvdWxkIGFsbG93IHlvdSB0byBsb2FkLWJhbGFuY2UgdHJhZmZpYyBhY3Jvc3MgYm90
aCBpbnRlcmZhY2VzLiBUbyBkbyB0aGlzLCBhZGQgdGhlIGVxdWFsaXplIG9wdGlvbiB0byB5b3Vy
IDIgZGVmYXVsdCByb3V0ZXMgd2hlbiBhZGRpbmcgdGhlbS4gWW91IG1pZ2h0IG5lZWQgdG8gdmVy
aWZ5IHRoYXQgeW91IGhhdmUgbXVsdGlwYXRoIHN1cHBvcnQgYmFrZWQgaW50byB5b3VyIGtlcm5l
bCBmaXJzdC4NCj4gPj4gPg0KPiA+PiA+Sm9lbCBHZXJiZXINCj4gPj4gPk5ldHdvcmsgU3BlY2lh
bGlzdA0KPiA+PiA+TmV0d29yayBPcGVyYXRpb25zDQo+ID4+ID5FYXN0bGluaw0KPiA+PiA+RTog
Sm9lbC5HZXJiZXJAY29ycC5lYXN0bGluay5jYSBUOiA1MTkuNzg2LjEyNDENCj4gPj4gPg0KPiA+
PiA+LS0tLS1PcmlnaW5hbCBNZXNzYWdlLS0tLS0NCj4gPj4gPkZyb206IGxhcnRjLW93bmVyQHZn
ZXIua2VybmVsLm9yZyBbbWFpbHRvOmxhcnRjLW93bmVyQHZnZXIua2VybmVsLm9yZ10gT24gQmVo
YWxmIE9mIE9sZSBDcmFpZw0KPiA+PiA+U2VudDogQXByaWwtMTYtMTQgNzozNCBBTQ0KPiA+PiA+
VG86IGxhcnRjQHZnZXIua2VybmVsLm9yZw0KPiA+PiA+U3ViamVjdDogaXByb3V0ZTIgZG9lcyBu
b3Qgc2VsZWN0IDFzdCBkZWZhdWx0IHJvdXRlIGluIHRhYmxlPw0KPiA+PiA+DQo+ID4+ID5JIGFt
IGhhdmluZyB0aGUgZGFtbmVkZXN0IHRpbWUgd2l0aCBhIGR1YWwtSVAgQ2VudE9TNS1iYXNlZCBh
cHBsaWFuY2Ugd2hpY2ggc2VlbXMgdG8gZGVmeSBpdHMgaXByb3V0ZTIgY29uZmlndXJhdGlvbiwg
YW5kIEknbSBoZXJlIGhvcGluZyBzb21lb25lIHNtYXJ0ZXIgdGhhbiBtZSAoYWRtaXR0ZWRseSBu
b3QgYSBoaWdoIGJhcikgbWlnaHQgYmUgc28ga2luZCBhcyB0byB0ZWxsIG1lIHdoYXQgSSdtIG1p
c3Npbmc6DQo+ID4+ID4gICAgICAgICMgaXAgcm91dGUgc2hvdyB0YWJsZSBtYWluDQo+ID4+ID4g
ICAgICAgIDEwLjEuMS4xIGRldiB0dW4wICBwcm90byBrZXJuZWwgIHNjb3BlIGxpbmsgIHNyYyAx
MC4xLjEuNw0KPiA+PiA+ICAgICAgICAxMC4yNTAuMzIuMSB2aWEgMTAuMS4xLjEgZGV2IHR1bjAN
Cj4gPj4gPiAgICAgICAgMTAuMjUwLjEwLjAvMjQgdmlhIDEwLjEuMS4xIGRldiB0dW4wDQo+ID4+
ID4gICAgICAgIDE5Mi4xNjguMjUuMC8yNCBkZXYgZXRoMCAgcHJvdG8ga2VybmVsICBzY29wZSBs
aW5rICBzcmMgMTkyLjE2OC4yNS4xMjQNCj4gPj4gPiAgICAgICAgMTkyLjE2OC4yNS4wLzI0IGRl
diBldGgxICBwcm90byBrZXJuZWwgIHNjb3BlIGxpbmsgIHNyYyAxOTIuMTY4LjI1LjEwMA0KPiA+
PiA+ICAgICAgICBkZWZhdWx0IHZpYSAxOTIuMTY4LjI1LjEgZGV2IGV0aDENCj4gPj4gPiAgICAg
ICAgZGVmYXVsdCB2aWEgMTkyLjE2OC4yNS4xIGRldiBldGgwDQo+ID4+ID4gICAgICAgICMgaXAg
cm91dGUgZ2V0IDguOC44LjgNCj4gPj4gPiAgICAgICAgOC44LjguOCB2aWEgMTkyLjE2OC4yNS4x
IGRldiBldGgwICBzcmMgMTkyLjE2OC4yNS4xMjQNCj4gPj4gPiAgICAgICAgICAgIGNhY2hlICBt
dHUgMTUwMCBhZHZtc3MgMTQ2MCBob3BsaW1pdCA2NA0KPiA+PiA+DQo+ID4+ID5JIGhhdmUgYmVl
biBwbGF5aW5nIHdpdGggdGhpcyBib3ggZm9yIHNldmVyYWwgZGF5cywgYW5kIG5vIG1hdHRlciB3
aGF0IEkgZG8gKGluY2x1ZGluZyByZWJvb3RzKSBpdCB3YW50cyB0byByb3V0ZSBhbG1vc3QgZXZl
cnl0aGluZyBvdXQgZXRoMCBpbnN0ZWFkIG9mIGV0aDEsIGRlc3BpdGUgdGhlIG9yZGVyaW5nIG9m
IGRlZmF1bHQgcm91dGVzIHNob3duIGFib3ZlIHdoaWNoIHNob3VsZCBzZWUgZXRoMSB0YWtpbmcg
cHJlY2VkZW5jZS4gTm8gaXB0YWJsZXMgUFJFUk9VVElORy9uYXQvbWFuZ2xlL3JhdyBzdHVmZiwg
dGhpcyBpcyBhbGwgc3RyYWlnaHQgaXByb3V0ZTIuDQo+ID4+ID4NCj4gPj4gPkkgZGV0ZXJtaW5l
ZCB0aGF0IHRoZSAnbWFpbicgdGFibGUgd2FzIHRoZSBvbmUgYXQgaXNzdWUgYnkgaW5zZXJ0aW5n
IGFuZCByZW1vdmluZyBhbiBvdmVycmlkaW5nIHJ1bGUgYXQgdmFyaW91cyBwcmlvcml0aWVzIHRv
IHNlZSB3aGVuICdpcCBnZXQnDQo+ID4+ID53b3VsZCBjaGFuZ2UgYmVoYXZpb3I6DQo+ID4+ID4g
ICAgICAgICMgaXAgcnVsZSBzaG93IHwgdGFpbA0KPiA+PiA+ICAgICAgICAzMjc1ODogICAgICAg
ZnJvbSBhbGwgdG8gMTkyLjE2OC43Mi4wLzI0IGxvb2t1cCBkZWZyb3V0ZXMNCj4gPj4gPiAgICAg
ICAgMzI3NTk6ICAgICAgIGZyb20gMTkyLjE2OC43Mi4wLzI0IGxvb2t1cCBkZWZyb3V0ZXMNCj4g
Pj4gPiAgICAgICAgMzI3NjA6ICAgICAgIGZyb20gMTkyLjE2OC43Mi4wLzI0IGxvb2t1cCBtZ3Ry
b3V0ZXMNCj4gPj4gPiAgICAgICAgMzI3NjY6ICAgICAgIGZyb20gYWxsIGxvb2t1cCBtYWluDQo+
ID4+ID4gICAgICAgIDMyNzY3OiAgICAgICBmcm9tIGFsbCBsb29rdXAgZGVmYXVsdA0KPiA+PiA+
ICAgICAgICAjIGlwIHJvdXRlIGFkZCB0YWJsZSBjdXN0b20gdG8gOC44LjguMC8yNCB2aWEgMTky
LjE2OC43Mi4xIGRldiBldGgxIHNyYyAxOTIuMTY4LjcyLjEwMA0KPiA+PiA+ICAgICAgICAjIGZv
ciBpIGluICQoc2VxIDMyNzY3IC0xIDMyNzY0KTsgZG8gaXAgcnVsZSBhZGQgcHJpbyAkaSB0byA4
LjguOC4wLzI0IGxvb2t1cCBjdXN0b207IGlwIHJvdXRlIGZsdXNoIGNhY2hlOyBzbGVlcCAyOyBl
Y2hvIC1lbiAiJGk6XHQiOyBpcCByb3V0ZSBnZXQgOC44LjguOHwgaGVhZCAtMTsgaXAgcnVsZSBk
ZWwgcHJpbyAkaSB0byA4LjguOC4wLzI0IGxvb2t1cCBjdXN0b207IGlwIHJvdXRlIGZsdXNoIGNh
Y2hlOyBzbGVlcCAyOyBkb25lDQo+ID4+ID4gICAgICAgIDMyNzY3OiAgICAgICA4LjguOC44IHZp
YSAxOTIuMTY4LjcyLjEgZGV2IGV0aDAgIHNyYyAxOTIuMTY4LjcyLjEyNA0KPiA+PiA+ICAgICAg
ICAzMjc2NjogICAgICAgOC44LjguOCB2aWEgMTkyLjE2OC43Mi4xIGRldiBldGgwICBzcmMgMTky
LjE2OC43Mi4xMjQNCj4gPj4gPiAgICAgICAgMzI3NjU6ICAgICAgIDguOC44LjggdmlhIDE5Mi4x
NjguNzIuMSBkZXYgZXRoMSAgc3JjIDE5Mi4xNjguNzIuMTAwDQo+ID4+ID4gICAgICAgIDMyNzY0
OiAgICAgICA4LjguOC44IHZpYSAxOTIuMTY4LjcyLjEgZGV2IGV0aDEgIHNyYyAxOTIuMTY4Ljcy
LjEwMA0KPiA+PiA+DQo+ID4+ID5Cb3RoIGludGVyZmFjZXMgYXJlIHVwLCBhbmQgYXJlICphYmxl
KiB0byByZWFjaCA4LjguOC44IHZpYSB0aGUgdXBzdHJlYW0NCj4gPj4gPmd3Og0KPiA+PiA+ICAg
ICAgICAjIHBpbmcgLWMgMSAtSSBldGgwIDguOC44LjgNCj4gPj4gPiAgICAgICAgUElORyA4Ljgu
OC44ICg4LjguOC44KSBmcm9tIDE5Mi4xNjguNzIuMTI0IGV0aDA6IDU2KDg0KSBieXRlcyBvZiBk
YXRhLg0KPiA+PiA+ICAgICAgICA2NCBieXRlcyBmcm9tIDguOC44Ljg6IGljbXBfc2VxPTEgdHRs
PTQ3IHRpbWU9MTQuOSBtcw0KPiA+PiA+DQo+ID4+ID4gICAgICAgIC0tLSA4LjguOC44IHBpbmcg
c3RhdGlzdGljcyAtLS0NCj4gPj4gPiAgICAgICAgMSBwYWNrZXRzIHRyYW5zbWl0dGVkLCAxIHJl
Y2VpdmVkLCAwJSBwYWNrZXQgbG9zcywgdGltZSAwbXMNCj4gPj4gPiAgICAgICAgcnR0IG1pbi9h
dmcvbWF4L21kZXYgPSAxNC45OTAvMTQuOTkwLzE0Ljk5MC8wLjAwMCBtcw0KPiA+PiA+ICAgICAg
ICAjIHBpbmcgLWMgMSAtSSBldGgxIDguOC44LjgNCj4gPj4gPiAgICAgICAgUElORyA4LjguOC44
ICg4LjguOC44KSBmcm9tIDE5Mi4xNjguNzIuMTAwIGV0aDE6IDU2KDg0KSBieXRlcyBvZiBkYXRh
Lg0KPiA+PiA+ICAgICAgICA2NCBieXRlcyBmcm9tIDguOC44Ljg6IGljbXBfc2VxPTEgdHRsPTQ3
IHRpbWU9MTQuOSBtcw0KPiA+PiA+DQo+ID4+ID4gICAgICAgIC0tLSA4LjguOC44IHBpbmcgc3Rh
dGlzdGljcyAtLS0NCj4gPj4gPiAgICAgICAgMSBwYWNrZXRzIHRyYW5zbWl0dGVkLCAxIHJlY2Vp
dmVkLCAwJSBwYWNrZXQgbG9zcywgdGltZSAwbXMNCj4gPj4gPiAgICAgICAgcnR0IG1pbi9hdmcv
bWF4L21kZXYgPSAxNC45OTkvMTQuOTk5LzE0Ljk5OS8wLjAwMCBtcw0KPiA+PiA+DQo+ID4+ID5D
YW4gYW55b25lIGhlbHAgbXkgZmlndXJlIG91dCB3aHkgdGhpcyBib3ggKGFsb25lIG91dCBvZiBt
YW55LCBtYW55IGFwcGxpYW5jZXMgd2l0aCBzaW1pbGFyIGNvbmZpZ3VyYXRpb25zIGF0IHZhcmlv
dXMgY3VzdG9tZXIgc2l0ZXMpIGlzIGRldGVybWluZWQgdG8gcmVhY2ggb3V0IHRocm91Z2ggZXRo
MD8NCj4gPj4gPg0KPiA+PiA+VGhlIGZ1bGwgUlBEQiBydWxlc2V0Og0KPiA+PiA+ICAgICAgICAj
IGlwIHJ1bGUgc2hvdw0KPiA+PiA+ICAgICAgICAwOiAgIGZyb20gYWxsIGxvb2t1cCAyNTUNCj4g
Pj4gPiAgICAgICAgMTA6ICBmcm9tIGFsbCBsb29rdXAgYm9vdHN0cmFwDQo+ID4+ID4gICAgICAg
IDMyNzM2OiAgICAgICBmcm9tIGFsbCB0byAxMjguMTE5LjQwLjEgbG9va3VwIG1ndHJvdXRlcw0K
PiA+PiA+ICAgICAgICAzMjczNzogICAgICAgZnJvbSBhbGwgdG8gMTkyLjE2OC4xMjYuMjI4IGxv
b2t1cCBtZ3Ryb3V0ZXMNCj4gPj4gPiAgICAgICAgMzI3Mzg6ICAgICAgIGZyb20gYWxsIHRvIDE5
Mi4xNjguNzYuMjMyIGxvb2t1cCBtZ3Ryb3V0ZXMNCj4gPj4gPiAgICAgICAgMzI3Mzk6ICAgICAg
IGZyb20gYWxsIHRvIDE5Mi4xNjguOTAuMTEyIGxvb2t1cCBtZ3Ryb3V0ZXMNCj4gPj4gPiAgICAg
ICAgMzI3NDA6ICAgICAgIGZyb20gYWxsIHRvIDE5Mi4xNjguNjEuMTEyIGxvb2t1cCBtZ3Ryb3V0
ZXMNCj4gPj4gPiAgICAgICAgMzI3NDE6ICAgICAgIGZyb20gYWxsIHRvIDE5Mi4xNjguNzYuMjMy
IGxvb2t1cCBtZ3Ryb3V0ZXMNCj4gPj4gPiAgICAgICAgMzI3NDI6ICAgICAgIGZyb20gYWxsIHRv
IDE5Mi4xNjguNjEuMTEyIGxvb2t1cCBtZ3Ryb3V0ZXMNCj4gPj4gPiAgICAgICAgMzI3NDM6ICAg
ICAgIGZyb20gYWxsIHRvIDE5Mi4xNjguMzQuMzUgbG9va3VwIG1ndHJvdXRlcw0KPiA+PiA+ICAg
ICAgICAzMjc0NDogICAgICAgZnJvbSBhbGwgdG8gMTkyLjE2OC42MS4xMTIgbG9va3VwIGRlZnJv
dXRlcw0KPiA+PiA+ICAgICAgICAzMjc0NTogICAgICAgZnJvbSBhbGwgdG8gMTkyLjE2OC4xMzQu
NDcgbG9va3VwIG1ndHJvdXRlcw0KPiA+PiA+ICAgICAgICAzMjc0NjogICAgICAgZnJvbSBhbGwg
dG8gMTkyLjE2OC4xMjcuNjggbG9va3VwIG1ndHJvdXRlcw0KPiA+PiA+ICAgICAgICAzMjc0Nzog
ICAgICAgZnJvbSBhbGwgdG8gMTkyLjE2OC42Ni42IGxvb2t1cCBtZ3Ryb3V0ZXMNCj4gPj4gPiAg
ICAgICAgMzI3NDg6ICAgICAgIGZyb20gYWxsIHRvIDE5Mi4xNjguMTI2LjIyOCBsb29rdXAgbWd0
cm91dGVzDQo+ID4+ID4gICAgICAgIDMyNzQ5OiAgICAgICBmcm9tIGFsbCB0byAxOTIuMTY4LjEy
Ny42OCBsb29rdXAgbWd0cm91dGVzDQo+ID4+ID4gICAgICAgIDMyNzUwOiAgICAgICBmcm9tIGFs
bCB0byAxOTIuMTY4LjEzNC40MSBsb29rdXAgbWd0cm91dGVzDQo+ID4+ID4gICAgICAgIDMyNzUx
OiAgICAgICBmcm9tIGFsbCB0byAxOTIuMTY4LjEzNC40MSBsb29rdXAgbWd0cm91dGVzDQo+ID4+
ID4gICAgICAgIDMyNzUyOiAgICAgICBmcm9tIGFsbCB0byAxOTIuMTY4Ljc2LjIzMiBsb29rdXAg
bWd0cm91dGVzDQo+ID4+ID4gICAgICAgIDMyNzUzOiAgICAgICBmcm9tIGFsbCB0byAxMDcuMjMu
MTUuMTc1IGxvb2t1cCBtZ3Ryb3V0ZXMNCj4gPj4gPiAgICAgICAgMzI3NTQ6ICAgICAgIGZyb20g
YWxsIHRvIDIxNi44Ny42OS45NCBsb29rdXAgbWd0cm91dGVzDQo+ID4+ID4gICAgICAgIDMyNzU1
OiAgICAgICBmcm9tIDE5Mi4xNjguNzIuMTI0IGxvb2t1cCBtZ3Ryb3V0ZXMNCj4gPj4gPiAgICAg
ICAgMzI3NTY6ICAgICAgIGZyb20gMTkyLjE2OC43Mi4xMDAgbG9va3VwIGRlZnJvdXRlcw0KPiA+
PiA+ICAgICAgICAzMjc1NzogICAgICAgZnJvbSAxOTIuMTY4LjcyLjAvMjQgdG8gMTkyLjE2OC43
Mi4wLzI0IGxvb2t1cCBtZ3Ryb3V0ZXMNCj4gPj4gPiAgICAgICAgMzI3NTg6ICAgICAgIGZyb20g
YWxsIHRvIDE5Mi4xNjguNzIuMC8yNCBsb29rdXAgZGVmcm91dGVzDQo+ID4+ID4gICAgICAgIDMy
NzU5OiAgICAgICBmcm9tIDE5Mi4xNjguNzIuMC8yNCBsb29rdXAgZGVmcm91dGVzDQo+ID4+ID4g
ICAgICAgIDMyNzYwOiAgICAgICBmcm9tIDE5Mi4xNjguNzIuMC8yNCBsb29rdXAgbWd0cm91dGVz
DQo+ID4+ID4gICAgICAgIDMyNzY2OiAgICAgICBmcm9tIGFsbCBsb29rdXAgbWFpbg0KPiA+PiA+
ICAgICAgICAzMjc2NzogICAgICAgZnJvbSBhbGwgbG9va3VwIGRlZmF1bHQNCj4gPj4gPg0KPiA+
PiA+DQo+ID4+ID4NCj4gPj4gPiAgICAgVGhhbmsgeW91IGZvciBhbnkgY2x1ZSB5b3UgY2FuIHNw
YXJlLA0KPiA+PiA+ICAgICAgICAgICAgIE9sZQ0KPiA+PiA+LS0NCj4gPj4gPk9sZSBDcmFpZyA8
b2xjQG1hY21pbGxhbi1jcmFpZy5uZXQ+DQo+ID4+ID4NCj4gPj4gPi0tDQo+ID4+ID5UbyB1bnN1
YnNjcmliZSBmcm9tIHRoaXMgbGlzdDogc2VuZCB0aGUgbGluZSAidW5zdWJzY3JpYmUgbGFydGMi
IGluIHRoZSBib2R5IG9mIGEgbWVzc2FnZSB0byBtYWpvcmRvbW9Admdlci5rZXJuZWwub3JnIE1v
cmUgbWFqb3Jkb21vIGluZm8gYXQgIGh0dHA6Ly92Z2VyLmtlcm5lbC5vcmcvbWFqb3Jkb21vLWlu
Zm8uaHRtbA0KPiA+PiB7Lm4rKyXdtiB3ey5uK2pcKXcqamcg3aJqDQo+ID4gRw0KPiA+IGo6K3Z3
am0gIHdmaNmlDQo+ID4NCj4gPg0KPg0KPg0KPg0KDQoNCg=
^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: iproute2 does not select 1st default route in table?
2014-04-16 11:34 iproute2 does not select 1st default route in table? Ole Craig
` (7 preceding siblings ...)
2014-05-15 19:25 ` Joel Gerber
@ 2014-05-16 20:27 ` Ole Craig
2014-05-20 13:38 ` Joel Gerber
2014-05-20 13:40 ` Joel Gerber
10 siblings, 0 replies; 12+ messages in thread
From: Ole Craig @ 2014-05-16 20:27 UTC (permalink / raw)
To: lartc
I understand your curiosity.
The device in question is a managed security appliance with a design
requirement to use separate interfaces for management traffic vice
application traffic.
The developers were afraid of iptables and fwmark^W^W^W^W^Win a
hurry and shipped a device configurator method that classifies
management traffic solely by remote IP ("What's the IP of your XXXX
server? OK, we'll add a static eth0 route for that IP since XXXX is a
management protocol") and defaults everything else to eth1.*
Many of our customers don't have a separate management network in
their DMZ so they plug us in side-by-side on a single subnet. Out of
roughly 75 customer appliances deployed this way (some hardware, some
virtualized) Deviant here is the only one that routes out eth0 instead
of eth1.
Joel asked for some RPDB context:
> You have some ip rules listed, right? Could you give me `ip rule ls`
> as well as `ip route ls table x` where x is all tables referenced by
> `ip rule ls` except for default and local?
[root@dvnt ~]# ip rule ls | sanize
0: from all lookup 255
10: from all lookup bootstrap
32736: from all to 128.119.40.1 lookup mgtroutes
32737: from all to 192.168.126.228 lookup mgtroutes
32738: from all to 192.168.76.232 lookup mgtroutes
32739: from all to 192.168.90.112 lookup mgtroutes
32740: from all to 192.168.61.112 lookup mgtroutes
32741: from all to 192.168.76.232 lookup mgtroutes
32742: from all to 192.168.61.112 lookup mgtroutes
32743: from all to 192.168.34.35 lookup mgtroutes
32744: from all to 192.168.61.112 lookup defroutes
32745: from all to 192.168.134.47 lookup mgtroutes
32746: from all to 192.168.127.68 lookup mgtroutes
32747: from all to 192.168.66.6 lookup mgtroutes
32748: from all to 192.168.126.228 lookup mgtroutes
32749: from all to 192.168.127.68 lookup mgtroutes
32750: from all to 192.168.134.41 lookup mgtroutes
32751: from all to 192.168.134.41 lookup mgtroutes
32752: from all to 192.168.76.232 lookup mgtroutes
32753: from all to 107.22.16.175 lookup mgtroutes
32754: from all to 128.119.41.69 lookup mgtroutes
32755: from 192.168.72.124 lookup mgtroutes
32756: from 192.168.72.100 lookup defroutes
32757: from 192.168.72.0/24 to 192.168.72.0/24 lookup mgtroutes
32758: from all to 192.168.72.0/24 lookup defroutes
32759: from 192.168.72.0/24 lookup defroutes
32760: from 192.168.72.0/24 lookup mgtroutes
32766: from all lookup main
32767: from all lookup default
[root@dvnt ~]# for tbl in bootstrap mgtroutes defroutes main; do echo $tbl && ip route ls table $tbl ; done
bootstrap
172.16.128.70 via 192.168.72.1 dev eth0 src 192.168.72.124
128.119.41.69 via 192.168.72.1 dev eth0 src 192.168.72.124
192.168.1.10 via 192.168.72.1 dev eth0 src 192.168.72.124
mgtroutes
192.168.72.0/24 dev eth0 scope link src 192.168.72.124
default via 192.168.72.1 dev eth0 src 192.168.72.124
defroutes
192.168.72.0/24 dev eth1 scope link src 192.168.72.100
default via 192.168.72.1 dev eth1 src 192.168.72.100
main
10.1.1.1 dev tun0 proto kernel scope link src 10.1.1.7
10.250.32.1 via 10.1.1.1 dev tun0
10.250.10.0/24 via 10.1.1.1 dev tun0
192.168.72.0/24 dev eth0 proto kernel scope link src 192.168.72.124
192.168.72.0/24 dev eth1 proto kernel scope link src 192.168.72.100
default via 192.168.72.1 dev eth1
default via 192.168.72.1 dev eth0
[root@dvnt ~]#
Thanks,
Ole
* I have an iceboxed dev story to refactor the implementation using
fwmark on a protocol/target IP match instead of per-IP static routes,
but that story's been waiting for a casus belli. Maybe this will
suffice...
On Fri, 2014-05-16 at 08:33 -0300, Joel Gerber wrote:
> It could be used for “redundancy”, but a far better option is bonded
> interfaces. I’m honestly not sure why Ole has the network
> configuration in place that he does, not that that means that it’s not
> a workable configuration.
>
>
>
> Joel Gerber
> Network Administrator
> Network Operations
> Eastlink
> E: Joel.Gerber@corp.eastlink.ca T: 519.786.1241
>
>
>
> From: lucas castro [mailto:lucascastroborges@gmail.com]
> Sent: May-15-14 9:05 PM
> To: Joel Gerber
> Cc: Ole Craig; lartc@vger.kernel.org
> Subject: Re: iproute2 does not select 1st default route in table?
>
>
>
>
> Is that two interface in the same network and subnet for High
> Available ?
>
>
> I've never tried two interface in the same network/subnet into two
> different interface.
>
>
>
>
> On Thu, May 15, 2014 at 4:25 PM, Joel Gerber
> <Joel.Gerber@corp.eastlink.ca> wrote:
>
> I'm honestly stumped right now. Your route cache is getting populated
> with a route that your ip route show match command disagrees with.
> Your deviant box is quite deviant.
>
> You have some ip rules listed, right? Could you give me `ip rule ls`
> as well as `ip route ls table x` where x is all tables referenced by
> `ip rule ls` except for default and local?
>
>
> Joel Gerber
> Network Specialist
> Network Operations
> Eastlink
> E: Joel.Gerber@corp.eastlink.ca T: 519.786.1241
> -----Original Message-----
> From: Ole Craig [mailto:olc@macmillan-craig.net]
>
>
> Sent: May-13-14 7:35 PM
> To: Anton Danilov
> Cc: Joel Gerber; lartc@vger.kernel.org
> Subject: Re: iproute2 does not select 1st default route in table?
>
> Anton, Joel -
> Here's the output of ip route show cache 8.8.8.8, ip route show
> match 8.8.8.8, and ip route get 8.8.8.8
>
> ...on Deviant:
> [root@dvnt ~]# ip route show cache 8.8.8.8
> 8.8.8.8 via 192.168.72.1 dev eth0 src 192.168.72.124
> cache mtu 1500 advmss 1460 hoplimit 64
> 8.8.8.8 from 192.168.72.124 via 192.168.72.1 dev eth0
> cache mtu 1500 advmss 1460 hoplimit 64
> [root@dvnt ~]# ip route show match 8.8.8.8
> default via 192.168.72.1 dev eth1
> default via 192.168.72.1 dev eth0
> [root@dvnt ~]# ip route get 8.8.8.8
> 8.8.8.8 via 192.168.72.1 dev eth0 src 192.168.72.124
> cache mtu 1500 advmss 1460 hoplimit 64
>
> ...on Norm:
> [root@norm ~]# ip route show cache 8.8.8.8
> 8.8.8.8 via 192.168.72.1 dev eth1 src 192.168.72.99
> cache mtu 1500 advmss 1460 hoplimit 64
> 8.8.8.8 from 192.168.72.99 via 192.168.72.1 dev eth1
> cache mtu 1500 advmss 1460 hoplimit 64
> [root@norm ~]# ip route show match 8.8.8.8
> default via 192.168.72.1 dev eth1
> default via 192.168.72.1 dev eth0
> [root@norm ~]# ip route get 8.8.8.8
> 8.8.8.8 via 192.168.72.1 dev eth1 src 192.168.72.99
> cache mtu 1500 advmss 1460 hoplimit 64
>
>
> Thanks,
> Ole
>
> On Tue, 2014-05-13 at 00:05 +0400, Anton Danilov wrote:
> > Hi, Joel.
> > Please use 'ip route get' and 'ip route show match' commands for
> > troubleshooting of route selection.
> > Some examples:
> > ip route get <dst> from <src> iif <lan-iface> - show route for
> transit
> > packets (not local-originated).
> > ip route show match <prefix> - show all mathed routes (with
> different
> > prefix length).
> >
> > 2014-05-12 15:52 GMT+04:00 Joel Gerber
> <Joel.Gerber@corp.eastlink.ca>:
> > > I'm getting confused now. I did some online reading, and I've
> found the following:
> > >
> > > If several routes match the packet, the following pruning rules
> are used to select the best one:
> > >
> > > 1. The longest matching prefix is selected; all shorter ones
> are dropped.
> > > 2. If the TOS of some route with the longest prefix is equal to
> the TOS of the packet, routes with different TOS are dropped.
> > > 3. If no exact TOS match is found and routes with TOS=0 exist,
> the rest of the routes are pruned. Otherwise the route lookup fails.
> > > 4. If several routes remain after steps 1-3 have been tried,
> then routes with the best preference value are selected.
> > > 5. If several routes still exist, then the first of them is
> selected.
> > >
> > >
> http://www.softpanorama.org/Net/Internet_layer/Routing/policy_routing.shtml
> > >
> > > I'm having a hard time finding anything more official that states
> this, and without looking at the kernel source code I can't be 100%
> certain, but it seems that the first route listed should be selected,
> when there are multiple matches.
> > >
> > > Here's something else to try, run the command "ip route show
> cache" and paste the contents here. As the cache is the first thing
> queried before looking at your routing list, I'm curious to see what
> it shows.
> > >
> > > Joel Gerber
> > > Network Specialist
> > > Network Operations
> > > Eastlink
> > > E: Joel.Gerber@corp.eastlink.ca T: 519.786.1241
> > > -----Original Message-----
> > > From: Ole Craig [mailto:olc@macmillan-craig.net]
> > > Sent: May-09-14 4:14 PM
> > > To: Joel Gerber
> > > Cc: lartc@vger.kernel.org
> > > Subject: Re: iproute2 does not select 1st default route in table?
> > >
> > > Joel, et al -
> > > TL;DR: behavior at issue differs between 2 boxes which are
> 1 IP
> > > address apart with identical hw/sw loads; same kernel;
> interface
> > > numbering unchanged after kernel probing. What gives? What
> am I
> > > missing?
> > >
> > > (Apologies for the delayed response, life around here has been
> frantic
> > > and this has been sitting around half-composed in my mail client.)
> > >
> > > Details:
> > > Ok, I have two dual-interface boxes sitting next to each other
> on
> > > this customer's network. The first box is the one we've been
> discussing,
> > > I'll call him "Deviant" from now on. The second box (hereinafter
> "Norm")
> > > is acting just like the rest of the appliances in our fleet, i.e.
> > > routing out eth1 by default. Hoping that comparing these two
> (which are
> > > identical WRT both hardware and software config*) can lead to a
> more
> > > informed/precise conclusion as to what's causing them to behave
> > > differently (and maybe some ideas for re-norming Deviant;
> arbitrary
> > > routing is Not My Kink.:)
> > >
> > > kernel insertion order on Deviant:
> > > [root@dvnt ~]# uname -a
> > > Linux dvnt.example.com 2.6.18-348.4.1.el5 #1 SMP Tue Apr
> 16 15:40:06 EDT 2013 x86_64 x86_64 x86_64 GNU/Linux
> > > [root@dvnt ~]# dmesg | egrep 'eth.: \('
> > > igb 0000:01:00.0: eth0: (PCIe:2.5Gb/s:Width x4)
> > > 00:25:90:30:28:6c
> > > igb 0000:01:00.1: eth1: (PCIe:2.5Gb/s:Width x4)
> > > 00:25:90:30:28:6d
> > > device<-->address mapping on Deviant:
> > > [root@dvnt ~]# ip link show
> > > 1: lo: <LOOPBACK,UP,LOWER_UP> mtu 16436 qdisc noqueue
> > > link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
> > > 2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc
> > > pfifo_fast qlen 1000
> > > link/ether 00:25:90:30:28:6c brd ff:ff:ff:ff:ff:ff
> > > 3: eth1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc
> > > pfifo_fast qlen 1000
> > > link/ether 00:25:90:30:28:6d brd ff:ff:ff:ff:ff:ff
> > > Link status on Deviant:
> > > [root@dvnt ~]# for i in 0 1; do echo -n "eth$i: "; ethtool
> eth$i | grep Link; done
> > > eth0: Link detected: yes
> > > eth1: Link detected: yes
> > >
> > >
> > > kernel insertion order on Norm:
> > > [root@norm ~]# uname -a
> > > Linux norm.example.com 2.6.18-348.4.1.el5 #1 SMP Tue Apr
> 16 15:40:06 EDT 2013 x86_64 x86_64 x86_64 GNU/Linux
> > > [root@norm ~]# dmesg | egrep 'eth.: \('
> > > igb 0000:01:00.0: eth0: (PCIe:2.5Gb/s:Width x4)
> 00:25:90:30:2c:f8
> > > igb 0000:01:00.1: eth1: (PCIe:2.5Gb/s:Width x4)
> 00:25:90:30:2c:f9
> > > device<-->address map on Norm:
> > > [root@norm ~]# ip link show
> > > 1: lo: <LOOPBACK,UP,LOWER_UP> mtu 16436 qdisc noqueue
> > > link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
> > > 2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc
> pfifo_fast qlen 1000
> > > link/ether 00:25:90:30:2c:f8 brd ff:ff:ff:ff:ff:ff
> > > 3: eth1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc
> pfifo_fast qlen 1000
> > > link/ether 00:25:90:30:2c:f9 brd ff:ff:ff:ff:ff:ff
> > > Link status on Norm:
> > > [root@norm ~]# for i in 0 1; do echo -n "eth$i: "; ethtool
> eth$i | grep Link; done
> > > eth0: Link detected: yes
> > > eth1: Link detected: yes
> > >
> > >
> > > So, we can see that in both cases the device ordering is unchanged
> from
> > > that which was discovered at boot by the kernel, and that eth0 was
> > > probed first.
> > >
> > > And here again for posterity is the active routing table and
> results of
> > > "ip route get" on each machine:
> > >
> > > Deviant:
> > > [root@dvnt ~]# ip route show table main
> > > 10.1.1.1 dev tun0 proto kernel scope link src 10.1.1.7
> > > 10.250.32.1 via 10.1.1.1 dev tun0
> > > 10.250.10.0/24 via 10.1.1.1 dev tun0
> > > 192.168.72.0/24 dev eth0 proto kernel scope link src
> 192.168.72.124
> > > 192.168.72.0/24 dev eth1 proto kernel scope link src
> 192.168.72.100
> > > default via 192.168.72.1 dev eth1
> > > default via 192.168.72.1 dev eth0
> > > [root@dvnt ~]# ip route get 8.8.8.8 | sanize
> > > 8.8.8.8 via 192.168.72.1 dev eth0 src 192.168.72.124
> > > cache mtu 1500 advmss 1460 hoplimit 64
> > >
> > > Norm:
> > > [root@norm ~]# ip route show table main
> > > 10.1.1.1 dev tun0 proto kernel scope link src 10.1.1.45
> > > 10.250.32.1 via 10.1.1.1 dev tun0
> > > 10.250.10.0/24 via 10.1.1.1 dev tun0
> > > 192.168.72.0/24 dev eth0 proto kernel scope link src
> 192.168.72.123
> > > 192.168.72.0/24 dev eth1 proto kernel scope link src
> 192.168.72.99
> > > default via 192.168.72.1 dev eth1
> > > default via 192.168.72.1 dev eth0
> > > [root@norm ~]# ip route get 8.8.8.8
> > > 8.8.8.8 via 192.168.72.1 dev eth1 src 192.168.72.99
> > > cache mtu 1500 advmss 1460 hoplimit 64
> > >
> > >
> > > Any thoughts as to what else might be going on?
> > >
> > > Ole
> > >
> > > *"identical[...]hw/sw config" -- granted there are differences in
> > > application configuration (layers 5-7) but nothing that should
> come
> > > close to affecting routing.
> > > --
> > > Ole Craig <olc@macmillan-craig.net>
> > >
> > > On Wed, 2014-04-16 at 16:51 -0300, Joel Gerber wrote:
> > >> Are you running different versions of the Linux kernel?
> > >>
> > >> I'm quite certain that the order the routes are added should have
> no weight on this matter. There is also another possibility. You might
> be renaming the interfaces differently that the order that they are
> loaded into the kernel as. Whichever interface was loaded first will
> have the smaller internal number, which is the one that would get
> selected first.
> > >>
> > >> Joel Gerber
> > >> Network Specialist
> > >> Network Operations
> > >> Eastlink
> > >> E: Joel.Gerber@corp.eastlink.ca T: 519.786.1241
> > >>
> > >> -----Original Message-----
> > >> From: Ole Craig [mailto:olc@macmillan-craig.net]
> > >> Sent: April-16-14 11:08 AM
> > >> To: Joel Gerber
> > >> Cc: lartc@vger.kernel.org
> > >> Subject: RE: iproute2 does not select 1st default route in table?
> > >>
> > >> Hello Joel,
> > >> There must be something else in play; we manage hundreds of other
> similar appliances and this is the only one that's exhibiting this
> behavior. ("similar" = "same hardware spec, same software spec, only
> the IPs are different" -- and yes, most of them have eth0 and eth1
> sharing a subnet and gw, and eth1 is always the default route for
> packets not built with a specific source IP.)
> > >>
> > >> Thanks,
> > >> Ole
> > >>
> > >> Joel Gerber <Joel.Gerber@corp.eastlink.ca> wrote:
> > >>
> > >> >Hello Ole;
> > >> >
> > >> >If you have multiple routes set with the same metric to the same
> destination, by default, the Linux kernel will choose the lowest
> numbered interface to use. This would be why eth0 is being hit every
> time. It has nothing to do with your ip rule definitions. If you
> wanted to prefer eth1, add a larger metric flag to the eth0 route,
> which will cause eth1 to be used instead. Then, only in the event that
> eth1 is link-down, will eth0 be used.
> > >> >
> > >> >You could also setup ECMP (Equal Cost Multi Path) which would
> allow you to load-balance traffic across both interfaces. To do this,
> add the equalize option to your 2 default routes when adding them. You
> might need to verify that you have multipath support baked into your
> kernel first.
> > >> >
> > >> >Joel Gerber
> > >> >Network Specialist
> > >> >Network Operations
> > >> >Eastlink
> > >> >E: Joel.Gerber@corp.eastlink.ca T: 519.786.1241
> > >> >
> > >> >-----Original Message-----
> > >> >From: lartc-owner@vger.kernel.org
> [mailto:lartc-owner@vger.kernel.org] On Behalf Of Ole Craig
> > >> >Sent: April-16-14 7:34 AM
> > >> >To: lartc@vger.kernel.org
> > >> >Subject: iproute2 does not select 1st default route in table?
> > >> >
> > >> >I am having the damnedest time with a dual-IP CentOS5-based
> appliance which seems to defy its iproute2 configuration, and I'm here
> hoping someone smarter than me (admittedly not a high bar) might be so
> kind as to tell me what I'm missing:
> > >> > # ip route show table main
> > >> > 10.1.1.1 dev tun0 proto kernel scope link src
> 10.1.1.7
> > >> > 10.250.32.1 via 10.1.1.1 dev tun0
> > >> > 10.250.10.0/24 via 10.1.1.1 dev tun0
> > >> > 192.168.25.0/24 dev eth0 proto kernel scope link src
> 192.168.25.124
> > >> > 192.168.25.0/24 dev eth1 proto kernel scope link src
> 192.168.25.100
> > >> > default via 192.168.25.1 dev eth1
> > >> > default via 192.168.25.1 dev eth0
> > >> > # ip route get 8.8.8.8
> > >> > 8.8.8.8 via 192.168.25.1 dev eth0 src 192.168.25.124
> > >> > cache mtu 1500 advmss 1460 hoplimit 64
> > >> >
> > >> >I have been playing with this box for several days, and no
> matter what I do (including reboots) it wants to route almost
> everything out eth0 instead of eth1, despite the ordering of default
> routes shown above which should see eth1 taking precedence. No
> iptables PREROUTING/nat/mangle/raw stuff, this is all straight
> iproute2.
> > >> >
> > >> >I determined that the 'main' table was the one at issue by
> inserting and removing an overriding rule at various priorities to see
> when 'ip get'
> > >> >would change behavior:
> > >> > # ip rule show | tail
> > >> > 32758: from all to 192.168.72.0/24 lookup
> defroutes
> > >> > 32759: from 192.168.72.0/24 lookup defroutes
> > >> > 32760: from 192.168.72.0/24 lookup mgtroutes
> > >> > 32766: from all lookup main
> > >> > 32767: from all lookup default
> > >> > # ip route add table custom to 8.8.8.0/24 via
> 192.168.72.1 dev eth1 src 192.168.72.100
> > >> > # for i in $(seq 32767 -1 32764); do ip rule add prio $i
> to 8.8.8.0/24 lookup custom; ip route flush cache; sleep 2; echo -en
> "$i:\t"; ip route get 8.8.8.8| head -1; ip rule del prio $i to
> 8.8.8.0/24 lookup custom; ip route flush cache; sleep 2; done
> > >> > 32767: 8.8.8.8 via 192.168.72.1 dev eth0 src
> 192.168.72.124
> > >> > 32766: 8.8.8.8 via 192.168.72.1 dev eth0 src
> 192.168.72.124
> > >> > 32765: 8.8.8.8 via 192.168.72.1 dev eth1 src
> 192.168.72.100
> > >> > 32764: 8.8.8.8 via 192.168.72.1 dev eth1 src
> 192.168.72.100
> > >> >
> > >> >Both interfaces are up, and are *able* to reach 8.8.8.8 via the
> upstream
> > >> >gw:
> > >> > # ping -c 1 -I eth0 8.8.8.8
> > >> > PING 8.8.8.8 (8.8.8.8) from 192.168.72.124 eth0: 56(84)
> bytes of data.
> > >> > 64 bytes from 8.8.8.8: icmp_seq=1 ttlG time\x14.9 ms
> > >> >
> > >> > --- 8.8.8.8 ping statistics ---
> > >> > 1 packets transmitted, 1 received, 0% packet loss, time
> 0ms
> > >> > rtt min/avg/max/mdev = 14.990/14.990/14.990/0.000 ms
> > >> > # ping -c 1 -I eth1 8.8.8.8
> > >> > PING 8.8.8.8 (8.8.8.8) from 192.168.72.100 eth1: 56(84)
> bytes of data.
> > >> > 64 bytes from 8.8.8.8: icmp_seq=1 ttlG time\x14.9 ms
> > >> >
> > >> > --- 8.8.8.8 ping statistics ---
> > >> > 1 packets transmitted, 1 received, 0% packet loss, time
> 0ms
> > >> > rtt min/avg/max/mdev = 14.999/14.999/14.999/0.000 ms
> > >> >
> > >> >Can anyone help my figure out why this box (alone out of many,
> many appliances with similar configurations at various customer sites)
> is determined to reach out through eth0?
> > >> >
> > >> >The full RPDB ruleset:
> > >> > # ip rule show
> > >> > 0: from all lookup 255
> > >> > 10: from all lookup bootstrap
> > >> > 32736: from all to 128.119.40.1 lookup mgtroutes
> > >> > 32737: from all to 192.168.126.228 lookup
> mgtroutes
> > >> > 32738: from all to 192.168.76.232 lookup mgtroutes
> > >> > 32739: from all to 192.168.90.112 lookup mgtroutes
> > >> > 32740: from all to 192.168.61.112 lookup mgtroutes
> > >> > 32741: from all to 192.168.76.232 lookup mgtroutes
> > >> > 32742: from all to 192.168.61.112 lookup mgtroutes
> > >> > 32743: from all to 192.168.34.35 lookup mgtroutes
> > >> > 32744: from all to 192.168.61.112 lookup defroutes
> > >> > 32745: from all to 192.168.134.47 lookup mgtroutes
> > >> > 32746: from all to 192.168.127.68 lookup mgtroutes
> > >> > 32747: from all to 192.168.66.6 lookup mgtroutes
> > >> > 32748: from all to 192.168.126.228 lookup
> mgtroutes
> > >> > 32749: from all to 192.168.127.68 lookup mgtroutes
> > >> > 32750: from all to 192.168.134.41 lookup mgtroutes
> > >> > 32751: from all to 192.168.134.41 lookup mgtroutes
> > >> > 32752: from all to 192.168.76.232 lookup mgtroutes
> > >> > 32753: from all to 107.23.15.175 lookup mgtroutes
> > >> > 32754: from all to 216.87.69.94 lookup mgtroutes
> > >> > 32755: from 192.168.72.124 lookup mgtroutes
> > >> > 32756: from 192.168.72.100 lookup defroutes
> > >> > 32757: from 192.168.72.0/24 to 192.168.72.0/24
> lookup mgtroutes
> > >> > 32758: from all to 192.168.72.0/24 lookup
> defroutes
> > >> > 32759: from 192.168.72.0/24 lookup defroutes
> > >> > 32760: from 192.168.72.0/24 lookup mgtroutes
> > >> > 32766: from all lookup main
> > >> > 32767: from all lookup default
> > >> >
> > >> >
> > >> >
> > >> > Thank you for any clue you can spare,
> > >> > Ole
> > >> >--
> > >> >Ole Craig <olc@macmillan-craig.net>
> > >> >
> > >> >--
> > >> >To unsubscribe from this list: send the line "unsubscribe lartc"
> in the body of a message to majordomo@vger.kernel.org More majordomo
> info at http://vger.kernel.org/majordomo-info.html
> > >> {.n++%ݶ w{.n+j\)w*jg ݢj
> > > G
> > > j:+vwjm wfh٥
> > >
> > >
> >
> >
> >
>
>
>
>
>
>
>
> --
> contatos:
> Celular: ( 99 ) 9143-5954 - Vivo
> skype: lucasd3castro
> msn: lucascastroborges@hotmail.com
>
>
^ permalink raw reply [flat|nested] 12+ messages in thread
* RE: iproute2 does not select 1st default route in table?
2014-04-16 11:34 iproute2 does not select 1st default route in table? Ole Craig
` (8 preceding siblings ...)
2014-05-16 20:27 ` Ole Craig
@ 2014-05-20 13:38 ` Joel Gerber
2014-05-20 13:40 ` Joel Gerber
10 siblings, 0 replies; 12+ messages in thread
From: Joel Gerber @ 2014-05-20 13:38 UTC (permalink / raw)
To: lartc
T2ssIEknbSBzdGFydGluZyB0byBncm9rIHRoaXMgbm93LCBlc3BlY2lhbGx5IHdpdGggeW91ciBk
ZXNjcmlwdGlvbiBhcyB0byB0aGUgd2h5J3Mgb2YgeW91ciBuZXR3b3JrIGNvbmZpZ3VyYXRpb24u
IEkgYWxzbyB0aGluayBJIGtub3cgIndoeSIgdGhpcyBpcyBoYXBwZW5pbmcsIHRob3VnaCBldmVu
IHRoZSB3aHkgaXNuJ3QgbWFraW5nIG11Y2ggc2Vuc2UuDQoNCldoZW4geW91ciBvdXRib3VuZCBy
b3V0ZSBpcyBjaG9zZW4gZm9yIGxvY2FsbHkgZ2VuZXJhdGVkIHRyYWZmaWMsIHRoZSBMaW51eCBr
ZXJuZWwgZG9lc24ndCBrbm93IHlvdXIgc291cmNlIElQIHlldCwgc28gbm9uZSBvZiB5b3VyIGlw
IHJ1bGVzIGFyZSBiZWluZyBhbmFseXplZC4gQXMgeW91IGhhZCBzdGF0ZWQgZWFybGllciwgbWFp
biBpcyB0aGUgdGFibGUgdGhhdCB3aWxsIGJlIHF1ZXJpZWQuDQoNCkJhc2VkIHVwb24gd2hhdCBJ
IGZvdW5kIG9ubGluZSBsYXN0IHdlZWssIHRoZSBvcmRlciBvZiB5b3VyIHJvdXRlcyBzaG91bGQg
YmUgdGhlIG9ubHkgdGhpbmcgdGhhdCBtYXR0ZXJzIHNpbmNlIGJvdGggcm91dGVzIGFyZSBpZGVu
dGljYWwsIGJ1dCB0aGF0IGlzIG9idmlvdXNseSBub3QgdGhlIGNhc2Ugb24gZGV2aWFudC4gSSBj
YW4ndCBleHBsYWluIHRoaXMgYmVoYXZpb3VyLiBJdCdzIG5vdCBhY3RpbmcgYXMgaXQgc2hvdWxk
LiBUaGF0IHNhaWQsIEkga25vdyBhIHNpbXBsZSBzb2x1dGlvbi4gU2V0IGRpZmZlcmVudCBwcmlv
cml0eSB2YWx1ZXMgb24gdGhlIGRlZmF1bHQgcm91dGVzLiBJZiB5b3UgbWFyayBldGgwIGFzIHRo
ZSBoaWdoZXIgcHJpb3JpdHksIHRoZSBrZXJuZWwgKnNob3VsZCogc2VsZWN0IHRoZSBkZXNpcmVk
IHJvdXRlLiBZb3UgY2FuIGFsc28gdXNlIGZ3bWFyaywgYnV0IHRoYXQgd291bGQgYmUgYSBsb3Qg
bW9yZSBjb21wbGljYXRlZC4NCg0KSm9lbCBHZXJiZXINCk5ldHdvcmsgU3BlY2lhbGlzdA0KTmV0
d29yayBPcGVyYXRpb25zDQpFYXN0bGluaw0KRTogSm9lbC5HZXJiZXJAY29ycC5lYXN0bGluay5j
YSBUOiA1MTkuNzg2LjEyNDENCi0tLS0tT3JpZ2luYWwgTWVzc2FnZS0tLS0tDQpGcm9tOiBPbGUg
Q3JhaWcgW21haWx0bzpvbGNAbWFjbWlsbGFuLWNyYWlnLm5ldF0NClNlbnQ6IE1heS0xNi0xNCA0
OjI4IFBNDQpUbzogSm9lbCBHZXJiZXINCkNjOiBsdWNhcyBjYXN0cm87IGxhcnRjQHZnZXIua2Vy
bmVsLm9yZw0KU3ViamVjdDogUmU6IGlwcm91dGUyIGRvZXMgbm90IHNlbGVjdCAxc3QgZGVmYXVs
dCByb3V0ZSBpbiB0YWJsZT8NCg0KICAgIEkgdW5kZXJzdGFuZCB5b3VyIGN1cmlvc2l0eS4NCg0K
ICAgIFRoZSBkZXZpY2UgaW4gcXVlc3Rpb24gaXMgYSBtYW5hZ2VkIHNlY3VyaXR5IGFwcGxpYW5j
ZSB3aXRoIGEgZGVzaWduDQpyZXF1aXJlbWVudCB0byB1c2Ugc2VwYXJhdGUgaW50ZXJmYWNlcyBm
b3IgbWFuYWdlbWVudCB0cmFmZmljIHZpY2UNCmFwcGxpY2F0aW9uIHRyYWZmaWMuDQoNCiAgICBU
aGUgZGV2ZWxvcGVycyB3ZXJlIGFmcmFpZCBvZiBpcHRhYmxlcyBhbmQgZndtYXJrXldeV15XXlde
V2luIGENCmh1cnJ5IGFuZCBzaGlwcGVkIGEgZGV2aWNlIGNvbmZpZ3VyYXRvciBtZXRob2QgdGhh
dCBjbGFzc2lmaWVzDQptYW5hZ2VtZW50IHRyYWZmaWMgc29sZWx5IGJ5IHJlbW90ZSBJUCAoIldo
YXQncyB0aGUgSVAgb2YgeW91ciBYWFhYDQpzZXJ2ZXI/IE9LLCB3ZSdsbCBhZGQgYSBzdGF0aWMg
ZXRoMCByb3V0ZSBmb3IgdGhhdCBJUCBzaW5jZSBYWFhYIGlzIGENCm1hbmFnZW1lbnQgcHJvdG9j
b2wiKSBhbmQgZGVmYXVsdHMgZXZlcnl0aGluZyBlbHNlIHRvIGV0aDEuKg0KDQogICAgTWFueSBv
ZiBvdXIgY3VzdG9tZXJzIGRvbid0IGhhdmUgYSBzZXBhcmF0ZSBtYW5hZ2VtZW50IG5ldHdvcmsg
aW4NCnRoZWlyIERNWiBzbyB0aGV5IHBsdWcgdXMgaW4gc2lkZS1ieS1zaWRlIG9uIGEgc2luZ2xl
IHN1Ym5ldC4gT3V0IG9mDQpyb3VnaGx5IDc1IGN1c3RvbWVyIGFwcGxpYW5jZXMgZGVwbG95ZWQg
dGhpcyB3YXkgKHNvbWUgaGFyZHdhcmUsIHNvbWUNCnZpcnR1YWxpemVkKSBEZXZpYW50IGhlcmUg
aXMgdGhlIG9ubHkgb25lIHRoYXQgcm91dGVzIG91dCBldGgwIGluc3RlYWQNCm9mIGV0aDEuDQoN
CkpvZWwgYXNrZWQgZm9yIHNvbWUgUlBEQiBjb250ZXh0Og0KPiBZb3UgaGF2ZSBzb21lIGlwIHJ1
bGVzIGxpc3RlZCwgcmlnaHQ/IENvdWxkIHlvdSBnaXZlIG1lIGBpcCBydWxlIGxzYA0KPiBhcyB3
ZWxsIGFzIGBpcCByb3V0ZSBscyB0YWJsZSB4YCB3aGVyZSB4IGlzIGFsbCB0YWJsZXMgcmVmZXJl
bmNlZCBieQ0KPiBgaXAgcnVsZSBsc2AgZXhjZXB0IGZvciBkZWZhdWx0IGFuZCBsb2NhbD8NCg0K
ICAgICAgICBbcm9vdEBkdm50IH5dIyBpcCBydWxlIGxzIHwgc2FuaXplDQogICAgICAgIDA6ICAg
ICAgZnJvbSBhbGwgbG9va3VwIDI1NQ0KICAgICAgICAxMDogICAgIGZyb20gYWxsIGxvb2t1cCBi
b290c3RyYXANCiAgICAgICAgMzI3MzY6ICBmcm9tIGFsbCB0byAxMjguMTE5LjQwLjEgbG9va3Vw
IG1ndHJvdXRlcw0KICAgICAgICAzMjczNzogIGZyb20gYWxsIHRvIDE5Mi4xNjguMTI2LjIyOCBs
b29rdXAgbWd0cm91dGVzDQogICAgICAgIDMyNzM4OiAgZnJvbSBhbGwgdG8gMTkyLjE2OC43Ni4y
MzIgbG9va3VwIG1ndHJvdXRlcw0KICAgICAgICAzMjczOTogIGZyb20gYWxsIHRvIDE5Mi4xNjgu
OTAuMTEyIGxvb2t1cCBtZ3Ryb3V0ZXMNCiAgICAgICAgMzI3NDA6ICBmcm9tIGFsbCB0byAxOTIu
MTY4LjYxLjExMiBsb29rdXAgbWd0cm91dGVzDQogICAgICAgIDMyNzQxOiAgZnJvbSBhbGwgdG8g
MTkyLjE2OC43Ni4yMzIgbG9va3VwIG1ndHJvdXRlcw0KICAgICAgICAzMjc0MjogIGZyb20gYWxs
IHRvIDE5Mi4xNjguNjEuMTEyIGxvb2t1cCBtZ3Ryb3V0ZXMNCiAgICAgICAgMzI3NDM6ICBmcm9t
IGFsbCB0byAxOTIuMTY4LjM0LjM1IGxvb2t1cCBtZ3Ryb3V0ZXMNCiAgICAgICAgMzI3NDQ6ICBm
cm9tIGFsbCB0byAxOTIuMTY4LjYxLjExMiBsb29rdXAgZGVmcm91dGVzDQogICAgICAgIDMyNzQ1
OiAgZnJvbSBhbGwgdG8gMTkyLjE2OC4xMzQuNDcgbG9va3VwIG1ndHJvdXRlcw0KICAgICAgICAz
Mjc0NjogIGZyb20gYWxsIHRvIDE5Mi4xNjguMTI3LjY4IGxvb2t1cCBtZ3Ryb3V0ZXMNCiAgICAg
ICAgMzI3NDc6ICBmcm9tIGFsbCB0byAxOTIuMTY4LjY2LjYgbG9va3VwIG1ndHJvdXRlcw0KICAg
ICAgICAzMjc0ODogIGZyb20gYWxsIHRvIDE5Mi4xNjguMTI2LjIyOCBsb29rdXAgbWd0cm91dGVz
DQogICAgICAgIDMyNzQ5OiAgZnJvbSBhbGwgdG8gMTkyLjE2OC4xMjcuNjggbG9va3VwIG1ndHJv
dXRlcw0KICAgICAgICAzMjc1MDogIGZyb20gYWxsIHRvIDE5Mi4xNjguMTM0LjQxIGxvb2t1cCBt
Z3Ryb3V0ZXMNCiAgICAgICAgMzI3NTE6ICBmcm9tIGFsbCB0byAxOTIuMTY4LjEzNC40MSBsb29r
dXAgbWd0cm91dGVzDQogICAgICAgIDMyNzUyOiAgZnJvbSBhbGwgdG8gMTkyLjE2OC43Ni4yMzIg
bG9va3VwIG1ndHJvdXRlcw0KICAgICAgICAzMjc1MzogIGZyb20gYWxsIHRvIDEwNy4yMi4xNi4x
NzUgbG9va3VwIG1ndHJvdXRlcw0KICAgICAgICAzMjc1NDogIGZyb20gYWxsIHRvIDEyOC4xMTku
NDEuNjkgbG9va3VwIG1ndHJvdXRlcw0KICAgICAgICAzMjc1NTogIGZyb20gMTkyLjE2OC43Mi4x
MjQgbG9va3VwIG1ndHJvdXRlcw0KICAgICAgICAzMjc1NjogIGZyb20gMTkyLjE2OC43Mi4xMDAg
bG9va3VwIGRlZnJvdXRlcw0KICAgICAgICAzMjc1NzogIGZyb20gMTkyLjE2OC43Mi4wLzI0IHRv
IDE5Mi4xNjguNzIuMC8yNCBsb29rdXAgbWd0cm91dGVzDQogICAgICAgIDMyNzU4OiAgZnJvbSBh
bGwgdG8gMTkyLjE2OC43Mi4wLzI0IGxvb2t1cCBkZWZyb3V0ZXMNCiAgICAgICAgMzI3NTk6ICBm
cm9tIDE5Mi4xNjguNzIuMC8yNCBsb29rdXAgZGVmcm91dGVzDQogICAgICAgIDMyNzYwOiAgZnJv
bSAxOTIuMTY4LjcyLjAvMjQgbG9va3VwIG1ndHJvdXRlcw0KICAgICAgICAzMjc2NjogIGZyb20g
YWxsIGxvb2t1cCBtYWluDQogICAgICAgIDMyNzY3OiAgZnJvbSBhbGwgbG9va3VwIGRlZmF1bHQN
CiAgICAgICAgW3Jvb3RAZHZudCB+XSMgZm9yIHRibCBpbiBib290c3RyYXAgbWd0cm91dGVzIGRl
ZnJvdXRlcyBtYWluOyBkbyBlY2hvICR0YmwgJiYgaXAgcm91dGUgbHMgdGFibGUgJHRibCA7IGRv
bmUNCiAgICAgICAgYm9vdHN0cmFwDQogICAgICAgIDE3Mi4xNi4xMjguNzAgdmlhIDE5Mi4xNjgu
NzIuMSBkZXYgZXRoMCAgc3JjIDE5Mi4xNjguNzIuMTI0DQogICAgICAgIDEyOC4xMTkuNDEuNjkg
dmlhIDE5Mi4xNjguNzIuMSBkZXYgZXRoMCAgc3JjIDE5Mi4xNjguNzIuMTI0DQogICAgICAgIDE5
Mi4xNjguMS4xMCB2aWEgMTkyLjE2OC43Mi4xIGRldiBldGgwICBzcmMgMTkyLjE2OC43Mi4xMjQN
CiAgICAgICAgbWd0cm91dGVzDQogICAgICAgIDE5Mi4xNjguNzIuMC8yNCBkZXYgZXRoMCAgc2Nv
cGUgbGluayAgc3JjIDE5Mi4xNjguNzIuMTI0DQogICAgICAgIGRlZmF1bHQgdmlhIDE5Mi4xNjgu
NzIuMSBkZXYgZXRoMCAgc3JjIDE5Mi4xNjguNzIuMTI0DQogICAgICAgIGRlZnJvdXRlcw0KICAg
ICAgICAxOTIuMTY4LjcyLjAvMjQgZGV2IGV0aDEgIHNjb3BlIGxpbmsgIHNyYyAxOTIuMTY4Ljcy
LjEwMA0KICAgICAgICBkZWZhdWx0IHZpYSAxOTIuMTY4LjcyLjEgZGV2IGV0aDEgIHNyYyAxOTIu
MTY4LjcyLjEwMA0KICAgICAgICBtYWluDQogICAgICAgIDEwLjEuMS4xIGRldiB0dW4wICBwcm90
byBrZXJuZWwgIHNjb3BlIGxpbmsgIHNyYyAxMC4xLjEuNw0KICAgICAgICAxMC4yNTAuMzIuMSB2
aWEgMTAuMS4xLjEgZGV2IHR1bjANCiAgICAgICAgMTAuMjUwLjEwLjAvMjQgdmlhIDEwLjEuMS4x
IGRldiB0dW4wDQogICAgICAgIDE5Mi4xNjguNzIuMC8yNCBkZXYgZXRoMCAgcHJvdG8ga2VybmVs
ICBzY29wZSBsaW5rICBzcmMgMTkyLjE2OC43Mi4xMjQNCiAgICAgICAgMTkyLjE2OC43Mi4wLzI0
IGRldiBldGgxICBwcm90byBrZXJuZWwgIHNjb3BlIGxpbmsgIHNyYyAxOTIuMTY4LjcyLjEwMA0K
ICAgICAgICBkZWZhdWx0IHZpYSAxOTIuMTY4LjcyLjEgZGV2IGV0aDENCiAgICAgICAgZGVmYXVs
dCB2aWEgMTkyLjE2OC43Mi4xIGRldiBldGgwDQogICAgICAgIFtyb290QGR2bnQgfl0jDQoNCg0K
ICAgICAgICBUaGFua3MsDQogICAgICAgICAgICAgICAgT2xlDQoNCiogSSBoYXZlIGFuIGljZWJv
eGVkIGRldiBzdG9yeSB0byByZWZhY3RvciB0aGUgaW1wbGVtZW50YXRpb24gdXNpbmcNCmZ3bWFy
ayBvbiBhIHByb3RvY29sL3RhcmdldCBJUCBtYXRjaCBpbnN0ZWFkIG9mIHBlci1JUCBzdGF0aWMg
cm91dGVzLA0KYnV0IHRoYXQgc3RvcnkncyBiZWVuIHdhaXRpbmcgZm9yIGEgY2FzdXMgYmVsbGku
IE1heWJlIHRoaXMgd2lsbA0Kc3VmZmljZS4uLg0KDQpPbiBGcmksIDIwMTQtMDUtMTYgYXQgMDg6
MzMgLTAzMDAsIEpvZWwgR2VyYmVyIHdyb3RlOg0KPiBJdCBjb3VsZCBiZSB1c2VkIGZvciDigJxy
ZWR1bmRhbmN54oCdLCBidXQgYSBmYXIgYmV0dGVyIG9wdGlvbiBpcyBib25kZWQNCj4gaW50ZXJm
YWNlcy4gSeKAmW0gaG9uZXN0bHkgbm90IHN1cmUgd2h5IE9sZSBoYXMgdGhlIG5ldHdvcmsNCj4g
Y29uZmlndXJhdGlvbiBpbiBwbGFjZSB0aGF0IGhlIGRvZXMsIG5vdCB0aGF0IHRoYXQgbWVhbnMg
dGhhdCBpdOKAmXMgbm90DQo+IGEgd29ya2FibGUgY29uZmlndXJhdGlvbi4NCj4NCj4NCj4NCj4g
Sm9lbCBHZXJiZXINCj4gTmV0d29yayBBZG1pbmlzdHJhdG9yDQo+IE5ldHdvcmsgT3BlcmF0aW9u
cw0KPiBFYXN0bGluaw0KPiBFOiBKb2VsLkdlcmJlckBjb3JwLmVhc3RsaW5rLmNhIFQ6IDUxOS43
ODYuMTI0MQ0KPg0KPg0KPg0KPiBGcm9tOiBsdWNhcyBjYXN0cm8gW21haWx0bzpsdWNhc2Nhc3Ry
b2Jvcmdlc0BnbWFpbC5jb21dDQo+IFNlbnQ6IE1heS0xNS0xNCA5OjA1IFBNDQo+IFRvOiBKb2Vs
IEdlcmJlcg0KPiBDYzogT2xlIENyYWlnOyBsYXJ0Y0B2Z2VyLmtlcm5lbC5vcmcNCj4gU3ViamVj
dDogUmU6IGlwcm91dGUyIGRvZXMgbm90IHNlbGVjdCAxc3QgZGVmYXVsdCByb3V0ZSBpbiB0YWJs
ZT8NCj4NCj4NCj4NCj4NCj4gSXMgdGhhdCB0d28gaW50ZXJmYWNlIGluIHRoZSBzYW1lIG5ldHdv
cmsgYW5kIHN1Ym5ldCBmb3IgSGlnaA0KPiBBdmFpbGFibGUgPw0KPg0KPg0KPiBJJ3ZlIG5ldmVy
IHRyaWVkIHR3byBpbnRlcmZhY2UgaW4gdGhlIHNhbWUgbmV0d29yay9zdWJuZXQgaW50byB0d28N
Cj4gZGlmZmVyZW50IGludGVyZmFjZS4NCj4NCj4NCj4NCj4NCj4gT24gVGh1LCBNYXkgMTUsIDIw
MTQgYXQgNDoyNSBQTSwgSm9lbCBHZXJiZXINCj4gPEpvZWwuR2VyYmVyQGNvcnAuZWFzdGxpbmsu
Y2E+IHdyb3RlOg0KPg0KPiBJJ20gaG9uZXN0bHkgc3R1bXBlZCByaWdodCBub3cuIFlvdXIgcm91
dGUgY2FjaGUgaXMgZ2V0dGluZyBwb3B1bGF0ZWQNCj4gd2l0aCBhIHJvdXRlIHRoYXQgeW91ciBp
cCByb3V0ZSBzaG93IG1hdGNoIGNvbW1hbmQgZGlzYWdyZWVzIHdpdGguDQo+IFlvdXIgZGV2aWFu
dCBib3ggaXMgcXVpdGUgZGV2aWFudC4NCj4NCj4gWW91IGhhdmUgc29tZSBpcCBydWxlcyBsaXN0
ZWQsIHJpZ2h0PyBDb3VsZCB5b3UgZ2l2ZSBtZSBgaXAgcnVsZSBsc2ANCj4gYXMgd2VsbCBhcyBg
aXAgcm91dGUgbHMgdGFibGUgeGAgd2hlcmUgeCBpcyBhbGwgdGFibGVzIHJlZmVyZW5jZWQgYnkN
Cj4gYGlwIHJ1bGUgbHNgIGV4Y2VwdCBmb3IgZGVmYXVsdCBhbmQgbG9jYWw/DQo+DQo+DQo+IEpv
ZWwgR2VyYmVyDQo+IE5ldHdvcmsgU3BlY2lhbGlzdA0KPiBOZXR3b3JrIE9wZXJhdGlvbnMNCj4g
RWFzdGxpbmsNCj4gRTogSm9lbC5HZXJiZXJAY29ycC5lYXN0bGluay5jYSBUOiA1MTkuNzg2LjEy
NDENCj4gLS0tLS1PcmlnaW5hbCBNZXNzYWdlLS0tLS0NCj4gRnJvbTogT2xlIENyYWlnIFttYWls
dG86b2xjQG1hY21pbGxhbi1jcmFpZy5uZXRdDQo+DQo+DQo+IFNlbnQ6IE1heS0xMy0xNCA3OjM1
IFBNDQo+IFRvOiBBbnRvbiBEYW5pbG92DQo+IENjOiBKb2VsIEdlcmJlcjsgbGFydGNAdmdlci5r
ZXJuZWwub3JnDQo+IFN1YmplY3Q6IFJlOiBpcHJvdXRlMiBkb2VzIG5vdCBzZWxlY3QgMXN0IGRl
ZmF1bHQgcm91dGUgaW4gdGFibGU/DQo+DQo+IEFudG9uLCBKb2VsIC0NCj4gICAgIEhlcmUncyB0
aGUgb3V0cHV0IG9mIGlwIHJvdXRlIHNob3cgY2FjaGUgOC44LjguOCwgaXAgcm91dGUgc2hvdw0K
PiBtYXRjaCA4LjguOC44LCBhbmQgaXAgcm91dGUgZ2V0IDguOC44LjgNCj4NCj4gLi4ub24gRGV2
aWFudDoNCj4gICAgICAgICBbcm9vdEBkdm50IH5dIyBpcCByb3V0ZSBzaG93IGNhY2hlIDguOC44
LjgNCj4gICAgICAgICA4LjguOC44IHZpYSAxOTIuMTY4LjcyLjEgZGV2IGV0aDAgIHNyYyAxOTIu
MTY4LjcyLjEyNA0KPiAgICAgICAgICAgICBjYWNoZSAgbXR1IDE1MDAgYWR2bXNzIDE0NjAgaG9w
bGltaXQgNjQNCj4gICAgICAgICA4LjguOC44IGZyb20gMTkyLjE2OC43Mi4xMjQgdmlhIDE5Mi4x
NjguNzIuMSBkZXYgZXRoMA0KPiAgICAgICAgICAgICBjYWNoZSAgbXR1IDE1MDAgYWR2bXNzIDE0
NjAgaG9wbGltaXQgNjQNCj4gICAgICAgICBbcm9vdEBkdm50IH5dIyBpcCByb3V0ZSBzaG93IG1h
dGNoIDguOC44LjgNCj4gICAgICAgICBkZWZhdWx0IHZpYSAxOTIuMTY4LjcyLjEgZGV2IGV0aDEN
Cj4gICAgICAgICBkZWZhdWx0IHZpYSAxOTIuMTY4LjcyLjEgZGV2IGV0aDANCj4gICAgICAgICBb
cm9vdEBkdm50IH5dIyBpcCByb3V0ZSBnZXQgOC44LjguOA0KPiAgICAgICAgIDguOC44Ljggdmlh
IDE5Mi4xNjguNzIuMSBkZXYgZXRoMCAgc3JjIDE5Mi4xNjguNzIuMTI0DQo+ICAgICAgICAgICAg
IGNhY2hlICBtdHUgMTUwMCBhZHZtc3MgMTQ2MCBob3BsaW1pdCA2NA0KPg0KPiAuLi5vbiBOb3Jt
Og0KPiAgICAgICAgIFtyb290QG5vcm0gfl0jIGlwIHJvdXRlIHNob3cgY2FjaGUgOC44LjguOA0K
PiAgICAgICAgIDguOC44LjggdmlhIDE5Mi4xNjguNzIuMSBkZXYgZXRoMSAgc3JjIDE5Mi4xNjgu
NzIuOTkNCj4gICAgICAgICAgICAgY2FjaGUgIG10dSAxNTAwIGFkdm1zcyAxNDYwIGhvcGxpbWl0
IDY0DQo+ICAgICAgICAgOC44LjguOCBmcm9tIDE5Mi4xNjguNzIuOTkgdmlhIDE5Mi4xNjguNzIu
MSBkZXYgZXRoMQ0KPiAgICAgICAgICAgICBjYWNoZSAgbXR1IDE1MDAgYWR2bXNzIDE0NjAgaG9w
bGltaXQgNjQNCj4gICAgICAgICBbcm9vdEBub3JtIH5dIyAgaXAgcm91dGUgc2hvdyBtYXRjaCA4
LjguOC44DQo+ICAgICAgICAgZGVmYXVsdCB2aWEgMTkyLjE2OC43Mi4xIGRldiBldGgxDQo+ICAg
ICAgICAgZGVmYXVsdCB2aWEgMTkyLjE2OC43Mi4xIGRldiBldGgwDQo+ICAgICAgICAgW3Jvb3RA
bm9ybSB+XSMgaXAgcm91dGUgZ2V0IDguOC44LjgNCj4gICAgICAgICA4LjguOC44IHZpYSAxOTIu
MTY4LjcyLjEgZGV2IGV0aDEgIHNyYyAxOTIuMTY4LjcyLjk5DQo+ICAgICAgICAgICAgIGNhY2hl
ICBtdHUgMTUwMCBhZHZtc3MgMTQ2MCBob3BsaW1pdCA2NA0KPg0KPg0KPiAgICAgICAgIFRoYW5r
cywNCj4gICAgICAgICAgICAgICAgIE9sZQ0KPg0KPiBPbiBUdWUsIDIwMTQtMDUtMTMgYXQgMDA6
MDUgKzA0MDAsIEFudG9uIERhbmlsb3Ygd3JvdGU6DQo+ID4gSGksIEpvZWwuDQo+ID4gUGxlYXNl
IHVzZSAnaXAgcm91dGUgZ2V0JyBhbmQgJ2lwIHJvdXRlIHNob3cgbWF0Y2gnIGNvbW1hbmRzIGZv
cg0KPiA+IHRyb3VibGVzaG9vdGluZyBvZiByb3V0ZSBzZWxlY3Rpb24uDQo+ID4gU29tZSBleGFt
cGxlczoNCj4gPiBpcCByb3V0ZSBnZXQgPGRzdD4gZnJvbSA8c3JjPiBpaWYgPGxhbi1pZmFjZT4g
LSBzaG93IHJvdXRlIGZvcg0KPiB0cmFuc2l0DQo+ID4gcGFja2V0cyAobm90IGxvY2FsLW9yaWdp
bmF0ZWQpLg0KPiA+IGlwIHJvdXRlIHNob3cgbWF0Y2ggPHByZWZpeD4gLSBzaG93IGFsbCBtYXRo
ZWQgcm91dGVzICh3aXRoDQo+IGRpZmZlcmVudA0KPiA+IHByZWZpeCBsZW5ndGgpLg0KPiA+DQo+
ID4gMjAxNC0wNS0xMiAxNTo1MiBHTVQrMDQ6MDAgSm9lbCBHZXJiZXINCj4gPEpvZWwuR2VyYmVy
QGNvcnAuZWFzdGxpbmsuY2E+Og0KPiA+ID4gSSdtIGdldHRpbmcgY29uZnVzZWQgbm93LiBJIGRp
ZCBzb21lIG9ubGluZSByZWFkaW5nLCBhbmQgSSd2ZQ0KPiBmb3VuZCB0aGUgZm9sbG93aW5nOg0K
PiA+ID4NCj4gPiA+IElmIHNldmVyYWwgcm91dGVzIG1hdGNoIHRoZSBwYWNrZXQsIHRoZSBmb2xs
b3dpbmcgcHJ1bmluZyBydWxlcw0KPiBhcmUgdXNlZCB0byBzZWxlY3QgdGhlIGJlc3Qgb25lOg0K
PiA+ID4NCj4gPiA+ICAgIDEuIFRoZSBsb25nZXN0IG1hdGNoaW5nIHByZWZpeCBpcyBzZWxlY3Rl
ZDsgYWxsIHNob3J0ZXIgb25lcw0KPiBhcmUgZHJvcHBlZC4NCj4gPiA+ICAgIDIuIElmIHRoZSBU
T1Mgb2Ygc29tZSByb3V0ZSB3aXRoIHRoZSBsb25nZXN0IHByZWZpeCBpcyBlcXVhbCB0bw0KPiB0
aGUgVE9TIG9mIHRoZSBwYWNrZXQsIHJvdXRlcyB3aXRoIGRpZmZlcmVudCBUT1MgYXJlIGRyb3Bw
ZWQuDQo+ID4gPiAgICAzLiBJZiBubyBleGFjdCBUT1MgbWF0Y2ggaXMgZm91bmQgYW5kIHJvdXRl
cyB3aXRoIFRPUz0wIGV4aXN0LA0KPiB0aGUgcmVzdCBvZiB0aGUgcm91dGVzIGFyZSBwcnVuZWQu
IE90aGVyd2lzZSB0aGUgcm91dGUgbG9va3VwIGZhaWxzLg0KPiA+ID4gICAgNC4gSWYgc2V2ZXJh
bCByb3V0ZXMgcmVtYWluIGFmdGVyIHN0ZXBzIDEtMyBoYXZlIGJlZW4gdHJpZWQsDQo+IHRoZW4g
cm91dGVzIHdpdGggdGhlIGJlc3QgcHJlZmVyZW5jZSB2YWx1ZSBhcmUgc2VsZWN0ZWQuDQo+ID4g
PiAgICA1LiBJZiBzZXZlcmFsIHJvdXRlcyBzdGlsbCBleGlzdCwgdGhlbiB0aGUgZmlyc3Qgb2Yg
dGhlbSBpcw0KPiBzZWxlY3RlZC4NCj4gPiA+DQo+ID4gPg0KPiBodHRwOi8vd3d3LnNvZnRwYW5v
cmFtYS5vcmcvTmV0L0ludGVybmV0X2xheWVyL1JvdXRpbmcvcG9saWN5X3JvdXRpbmcuc2h0bWwN
Cj4gPiA+DQo+ID4gPiBJJ20gaGF2aW5nIGEgaGFyZCB0aW1lIGZpbmRpbmcgYW55dGhpbmcgbW9y
ZSBvZmZpY2lhbCB0aGF0IHN0YXRlcw0KPiB0aGlzLCBhbmQgd2l0aG91dCBsb29raW5nIGF0IHRo
ZSBrZXJuZWwgc291cmNlIGNvZGUgSSBjYW4ndCBiZSAxMDAlDQo+IGNlcnRhaW4sIGJ1dCBpdCBz
ZWVtcyB0aGF0IHRoZSBmaXJzdCByb3V0ZSBsaXN0ZWQgc2hvdWxkIGJlIHNlbGVjdGVkLA0KPiB3
aGVuIHRoZXJlIGFyZSBtdWx0aXBsZSBtYXRjaGVzLg0KPiA+ID4NCj4gPiA+IEhlcmUncyBzb21l
dGhpbmcgZWxzZSB0byB0cnksIHJ1biB0aGUgY29tbWFuZCAiaXAgcm91dGUgc2hvdw0KPiBjYWNo
ZSIgYW5kIHBhc3RlIHRoZSBjb250ZW50cyBoZXJlLiBBcyB0aGUgY2FjaGUgaXMgdGhlIGZpcnN0
IHRoaW5nDQo+IHF1ZXJpZWQgYmVmb3JlIGxvb2tpbmcgYXQgeW91ciByb3V0aW5nIGxpc3QsIEkn
bSBjdXJpb3VzIHRvIHNlZSB3aGF0DQo+IGl0IHNob3dzLg0KPiA+ID4NCj4gPiA+IEpvZWwgR2Vy
YmVyDQo+ID4gPiBOZXR3b3JrIFNwZWNpYWxpc3QNCj4gPiA+IE5ldHdvcmsgT3BlcmF0aW9ucw0K
PiA+ID4gRWFzdGxpbmsNCj4gPiA+IEU6IEpvZWwuR2VyYmVyQGNvcnAuZWFzdGxpbmsuY2EgVDog
NTE5Ljc4Ni4xMjQxDQo+ID4gPiAtLS0tLU9yaWdpbmFsIE1lc3NhZ2UtLS0tLQ0KPiA+ID4gRnJv
bTogT2xlIENyYWlnIFttYWlsdG86b2xjQG1hY21pbGxhbi1jcmFpZy5uZXRdDQo+ID4gPiBTZW50
OiBNYXktMDktMTQgNDoxNCBQTQ0KPiA+ID4gVG86IEpvZWwgR2VyYmVyDQo+ID4gPiBDYzogbGFy
dGNAdmdlci5rZXJuZWwub3JnDQo+ID4gPiBTdWJqZWN0OiBSZTogaXByb3V0ZTIgZG9lcyBub3Qg
c2VsZWN0IDFzdCBkZWZhdWx0IHJvdXRlIGluIHRhYmxlPw0KPiA+ID4NCj4gPiA+IEpvZWwsIGV0
IGFsIC0NCj4gPiA+ICAgICAgICAgVEw7RFI6IGJlaGF2aW9yIGF0IGlzc3VlIGRpZmZlcnMgYmV0
d2VlbiAyIGJveGVzIHdoaWNoIGFyZQ0KPiAxIElQDQo+ID4gPiAgICAgICAgIGFkZHJlc3MgYXBh
cnQgd2l0aCBpZGVudGljYWwgaHcvc3cgbG9hZHM7IHNhbWUga2VybmVsOw0KPiBpbnRlcmZhY2UN
Cj4gPiA+ICAgICAgICAgbnVtYmVyaW5nIHVuY2hhbmdlZCBhZnRlciBrZXJuZWwgcHJvYmluZy4g
V2hhdCBnaXZlcz8gV2hhdA0KPiBhbSBJDQo+ID4gPiAgICAgICAgIG1pc3Npbmc/DQo+ID4gPg0K
PiA+ID4gKEFwb2xvZ2llcyBmb3IgdGhlIGRlbGF5ZWQgcmVzcG9uc2UsIGxpZmUgYXJvdW5kIGhl
cmUgaGFzIGJlZW4NCj4gZnJhbnRpYw0KPiA+ID4gYW5kIHRoaXMgaGFzIGJlZW4gc2l0dGluZyBh
cm91bmQgaGFsZi1jb21wb3NlZCBpbiBteSBtYWlsIGNsaWVudC4pDQo+ID4gPg0KPiA+ID4gRGV0
YWlsczoNCj4gPiA+ICAgICBPaywgSSBoYXZlIHR3byBkdWFsLWludGVyZmFjZSBib3hlcyBzaXR0
aW5nIG5leHQgdG8gZWFjaCBvdGhlcg0KPiBvbg0KPiA+ID4gdGhpcyBjdXN0b21lcidzIG5ldHdv
cmsuIFRoZSBmaXJzdCBib3ggaXMgdGhlIG9uZSB3ZSd2ZSBiZWVuDQo+IGRpc2N1c3NpbmcsDQo+
ID4gPiBJJ2xsIGNhbGwgaGltICJEZXZpYW50IiBmcm9tIG5vdyBvbi4gVGhlIHNlY29uZCBib3gg
KGhlcmVpbmFmdGVyDQo+ICJOb3JtIikNCj4gPiA+IGlzIGFjdGluZyBqdXN0IGxpa2UgdGhlIHJl
c3Qgb2YgdGhlIGFwcGxpYW5jZXMgaW4gb3VyIGZsZWV0LCBpLmUuDQo+ID4gPiByb3V0aW5nIG91
dCBldGgxIGJ5IGRlZmF1bHQuIEhvcGluZyB0aGF0IGNvbXBhcmluZyB0aGVzZSB0d28NCj4gKHdo
aWNoIGFyZQ0KPiA+ID4gaWRlbnRpY2FsIFdSVCBib3RoIGhhcmR3YXJlIGFuZCBzb2Z0d2FyZSBj
b25maWcqKSBjYW4gbGVhZCB0byBhDQo+IG1vcmUNCj4gPiA+IGluZm9ybWVkL3ByZWNpc2UgY29u
Y2x1c2lvbiBhcyB0byB3aGF0J3MgY2F1c2luZyB0aGVtIHRvIGJlaGF2ZQ0KPiA+ID4gZGlmZmVy
ZW50bHkgKGFuZCBtYXliZSBzb21lIGlkZWFzIGZvciByZS1ub3JtaW5nIERldmlhbnQ7DQo+IGFy
Yml0cmFyeQ0KPiA+ID4gcm91dGluZyBpcyBOb3QgTXkgS2luay46KQ0KPiA+ID4NCj4gPiA+IGtl
cm5lbCBpbnNlcnRpb24gb3JkZXIgb24gRGV2aWFudDoNCj4gPiA+ICAgICAgICAgW3Jvb3RAZHZu
dCB+XSMgdW5hbWUgLWENCj4gPiA+ICAgICAgICAgTGludXggZHZudC5leGFtcGxlLmNvbSAyLjYu
MTgtMzQ4LjQuMS5lbDUgIzEgU01QIFR1ZSBBcHINCj4gMTYgMTU6NDA6MDYgRURUIDIwMTMgeDg2
XzY0IHg4Nl82NCB4ODZfNjQgR05VL0xpbnV4DQo+ID4gPiAgICAgICAgIFtyb290QGR2bnQgfl0j
IGRtZXNnIHwgZWdyZXAgJ2V0aC46IFwoJw0KPiA+ID4gICAgICAgICBpZ2IgMDAwMDowMTowMC4w
OiBldGgwOiAoUENJZToyLjVHYi9zOldpZHRoIHg0KQ0KPiA+ID4gICAgICAgICAwMDoyNTo5MDoz
MDoyODo2Yw0KPiA+ID4gICAgICAgICBpZ2IgMDAwMDowMTowMC4xOiBldGgxOiAoUENJZToyLjVH
Yi9zOldpZHRoIHg0KQ0KPiA+ID4gICAgICAgICAwMDoyNTo5MDozMDoyODo2ZA0KPiA+ID4gZGV2
aWNlPC0tPmFkZHJlc3MgbWFwcGluZyBvbiBEZXZpYW50Og0KPiA+ID4gICAgICAgICBbcm9vdEBk
dm50IH5dIyBpcCBsaW5rIHNob3cNCj4gPiA+ICAgICAgICAgMTogbG86IDxMT09QQkFDSyxVUCxM
T1dFUl9VUD4gbXR1IDE2NDM2IHFkaXNjIG5vcXVldWUNCj4gPiA+ICAgICAgICAgICAgIGxpbmsv
bG9vcGJhY2sgMDA6MDA6MDA6MDA6MDA6MDAgYnJkIDAwOjAwOjAwOjAwOjAwOjAwDQo+ID4gPiAg
ICAgICAgIDI6IGV0aDA6IDxCUk9BRENBU1QsTVVMVElDQVNULFVQLExPV0VSX1VQPiBtdHUgMTUw
MCBxZGlzYw0KPiA+ID4gICAgICAgICBwZmlmb19mYXN0IHFsZW4gMTAwMA0KPiA+ID4gICAgICAg
ICAgICAgbGluay9ldGhlciAwMDoyNTo5MDozMDoyODo2YyBicmQgZmY6ZmY6ZmY6ZmY6ZmY6ZmYN
Cj4gPiA+ICAgICAgICAgMzogZXRoMTogPEJST0FEQ0FTVCxNVUxUSUNBU1QsVVAsTE9XRVJfVVA+
IG10dSAxNTAwIHFkaXNjDQo+ID4gPiAgICAgICAgIHBmaWZvX2Zhc3QgcWxlbiAxMDAwDQo+ID4g
PiAgICAgICAgICAgICBsaW5rL2V0aGVyIDAwOjI1OjkwOjMwOjI4OjZkIGJyZCBmZjpmZjpmZjpm
ZjpmZjpmZg0KPiA+ID4gTGluayBzdGF0dXMgb24gRGV2aWFudDoNCj4gPiA+ICAgICAgICAgW3Jv
b3RAZHZudCB+XSMgZm9yIGkgaW4gMCAxOyBkbyBlY2hvIC1uICJldGgkaTogIjsgZXRodG9vbA0K
PiBldGgkaSB8IGdyZXAgTGluazsgZG9uZQ0KPiA+ID4gICAgICAgICBldGgwOiAgIExpbmsgZGV0
ZWN0ZWQ6IHllcw0KPiA+ID4gICAgICAgICBldGgxOiAgIExpbmsgZGV0ZWN0ZWQ6IHllcw0KPiA+
ID4NCj4gPiA+DQo+ID4gPiBrZXJuZWwgaW5zZXJ0aW9uIG9yZGVyIG9uIE5vcm06DQo+ID4gPiAg
ICAgICAgIFtyb290QG5vcm0gfl0jIHVuYW1lIC1hDQo+ID4gPiAgICAgICAgIExpbnV4IG5vcm0u
ZXhhbXBsZS5jb20gMi42LjE4LTM0OC40LjEuZWw1ICMxIFNNUCBUdWUgQXByDQo+IDE2IDE1OjQw
OjA2IEVEVCAyMDEzIHg4Nl82NCB4ODZfNjQgeDg2XzY0IEdOVS9MaW51eA0KPiA+ID4gICAgICAg
ICBbcm9vdEBub3JtIH5dIyBkbWVzZyB8IGVncmVwICdldGguOiBcKCcNCj4gPiA+ICAgICAgICAg
aWdiIDAwMDA6MDE6MDAuMDogZXRoMDogKFBDSWU6Mi41R2IvczpXaWR0aCB4NCkNCj4gMDA6MjU6
OTA6MzA6MmM6ZjgNCj4gPiA+ICAgICAgICAgaWdiIDAwMDA6MDE6MDAuMTogZXRoMTogKFBDSWU6
Mi41R2IvczpXaWR0aCB4NCkNCj4gMDA6MjU6OTA6MzA6MmM6ZjkNCj4gPiA+IGRldmljZTwtLT5h
ZGRyZXNzIG1hcCBvbiBOb3JtOg0KPiA+ID4gICAgICAgICBbcm9vdEBub3JtIH5dIyBpcCBsaW5r
IHNob3cNCj4gPiA+ICAgICAgICAgMTogbG86IDxMT09QQkFDSyxVUCxMT1dFUl9VUD4gbXR1IDE2
NDM2IHFkaXNjIG5vcXVldWUNCj4gPiA+ICAgICAgICAgICAgIGxpbmsvbG9vcGJhY2sgMDA6MDA6
MDA6MDA6MDA6MDAgYnJkIDAwOjAwOjAwOjAwOjAwOjAwDQo+ID4gPiAgICAgICAgIDI6IGV0aDA6
IDxCUk9BRENBU1QsTVVMVElDQVNULFVQLExPV0VSX1VQPiBtdHUgMTUwMCBxZGlzYw0KPiBwZmlm
b19mYXN0IHFsZW4gMTAwMA0KPiA+ID4gICAgICAgICAgICAgbGluay9ldGhlciAwMDoyNTo5MDoz
MDoyYzpmOCBicmQgZmY6ZmY6ZmY6ZmY6ZmY6ZmYNCj4gPiA+ICAgICAgICAgMzogZXRoMTogPEJS
T0FEQ0FTVCxNVUxUSUNBU1QsVVAsTE9XRVJfVVA+IG10dSAxNTAwIHFkaXNjDQo+IHBmaWZvX2Zh
c3QgcWxlbiAxMDAwDQo+ID4gPiAgICAgICAgICAgICBsaW5rL2V0aGVyIDAwOjI1OjkwOjMwOjJj
OmY5IGJyZCBmZjpmZjpmZjpmZjpmZjpmZg0KPiA+ID4gTGluayBzdGF0dXMgb24gTm9ybToNCj4g
PiA+ICAgICAgICAgW3Jvb3RAbm9ybSB+XSMgZm9yIGkgaW4gMCAxOyBkbyBlY2hvIC1uICJldGgk
aTogIjsgZXRodG9vbA0KPiBldGgkaSB8IGdyZXAgTGluazsgZG9uZQ0KPiA+ID4gICAgICAgICBl
dGgwOiAgIExpbmsgZGV0ZWN0ZWQ6IHllcw0KPiA+ID4gICAgICAgICBldGgxOiAgIExpbmsgZGV0
ZWN0ZWQ6IHllcw0KPiA+ID4NCj4gPiA+DQo+ID4gPiBTbywgd2UgY2FuIHNlZSB0aGF0IGluIGJv
dGggY2FzZXMgdGhlIGRldmljZSBvcmRlcmluZyBpcyB1bmNoYW5nZWQNCj4gZnJvbQ0KPiA+ID4g
dGhhdCB3aGljaCB3YXMgZGlzY292ZXJlZCBhdCBib290IGJ5IHRoZSBrZXJuZWwsIGFuZCB0aGF0
IGV0aDAgd2FzDQo+ID4gPiBwcm9iZWQgZmlyc3QuDQo+ID4gPg0KPiA+ID4gQW5kIGhlcmUgYWdh
aW4gZm9yIHBvc3Rlcml0eSBpcyB0aGUgYWN0aXZlIHJvdXRpbmcgdGFibGUgYW5kDQo+IHJlc3Vs
dHMgb2YNCj4gPiA+ICJpcCByb3V0ZSBnZXQiIG9uIGVhY2ggbWFjaGluZToNCj4gPiA+DQo+ID4g
PiBEZXZpYW50Og0KPiA+ID4gICAgICAgICBbcm9vdEBkdm50IH5dIyBpcCByb3V0ZSBzaG93IHRh
YmxlIG1haW4NCj4gPiA+ICAgICAgICAgMTAuMS4xLjEgZGV2IHR1bjAgIHByb3RvIGtlcm5lbCAg
c2NvcGUgbGluayAgc3JjIDEwLjEuMS43DQo+ID4gPiAgICAgICAgIDEwLjI1MC4zMi4xIHZpYSAx
MC4xLjEuMSBkZXYgdHVuMA0KPiA+ID4gICAgICAgICAxMC4yNTAuMTAuMC8yNCB2aWEgMTAuMS4x
LjEgZGV2IHR1bjANCj4gPiA+ICAgICAgICAgMTkyLjE2OC43Mi4wLzI0IGRldiBldGgwICBwcm90
byBrZXJuZWwgIHNjb3BlIGxpbmsgIHNyYw0KPiAxOTIuMTY4LjcyLjEyNA0KPiA+ID4gICAgICAg
ICAxOTIuMTY4LjcyLjAvMjQgZGV2IGV0aDEgIHByb3RvIGtlcm5lbCAgc2NvcGUgbGluayAgc3Jj
DQo+IDE5Mi4xNjguNzIuMTAwDQo+ID4gPiAgICAgICAgIGRlZmF1bHQgdmlhIDE5Mi4xNjguNzIu
MSBkZXYgZXRoMQ0KPiA+ID4gICAgICAgICBkZWZhdWx0IHZpYSAxOTIuMTY4LjcyLjEgZGV2IGV0
aDANCj4gPiA+ICAgICAgICAgW3Jvb3RAZHZudCB+XSMgaXAgcm91dGUgZ2V0IDguOC44LjggfCBz
YW5pemUNCj4gPiA+ICAgICAgICAgOC44LjguOCB2aWEgMTkyLjE2OC43Mi4xIGRldiBldGgwICBz
cmMgMTkyLjE2OC43Mi4xMjQNCj4gPiA+ICAgICAgICAgICAgIGNhY2hlICBtdHUgMTUwMCBhZHZt
c3MgMTQ2MCBob3BsaW1pdCA2NA0KPiA+ID4NCj4gPiA+IE5vcm06DQo+ID4gPiAgICAgICAgIFty
b290QG5vcm0gfl0jIGlwIHJvdXRlIHNob3cgdGFibGUgbWFpbg0KPiA+ID4gICAgICAgICAxMC4x
LjEuMSBkZXYgdHVuMCAgcHJvdG8ga2VybmVsICBzY29wZSBsaW5rICBzcmMgMTAuMS4xLjQ1DQo+
ID4gPiAgICAgICAgIDEwLjI1MC4zMi4xIHZpYSAxMC4xLjEuMSBkZXYgdHVuMA0KPiA+ID4gICAg
ICAgICAxMC4yNTAuMTAuMC8yNCB2aWEgMTAuMS4xLjEgZGV2IHR1bjANCj4gPiA+ICAgICAgICAg
MTkyLjE2OC43Mi4wLzI0IGRldiBldGgwICBwcm90byBrZXJuZWwgIHNjb3BlIGxpbmsgIHNyYw0K
PiAxOTIuMTY4LjcyLjEyMw0KPiA+ID4gICAgICAgICAxOTIuMTY4LjcyLjAvMjQgZGV2IGV0aDEg
IHByb3RvIGtlcm5lbCAgc2NvcGUgbGluayAgc3JjDQo+IDE5Mi4xNjguNzIuOTkNCj4gPiA+ICAg
ICAgICAgZGVmYXVsdCB2aWEgMTkyLjE2OC43Mi4xIGRldiBldGgxDQo+ID4gPiAgICAgICAgIGRl
ZmF1bHQgdmlhIDE5Mi4xNjguNzIuMSBkZXYgZXRoMA0KPiA+ID4gICAgICAgICBbcm9vdEBub3Jt
IH5dIyBpcCByb3V0ZSBnZXQgOC44LjguOA0KPiA+ID4gICAgICAgICA4LjguOC44IHZpYSAxOTIu
MTY4LjcyLjEgZGV2IGV0aDEgIHNyYyAxOTIuMTY4LjcyLjk5DQo+ID4gPiAgICAgICAgICAgICBj
YWNoZSAgbXR1IDE1MDAgYWR2bXNzIDE0NjAgaG9wbGltaXQgNjQNCj4gPiA+DQo+ID4gPg0KPiA+
ID4gQW55IHRob3VnaHRzIGFzIHRvIHdoYXQgZWxzZSBtaWdodCBiZSBnb2luZyBvbj8NCj4gPiA+
DQo+ID4gPiBPbGUNCj4gPiA+DQo+ID4gPiAqImlkZW50aWNhbFsuLi5daHcvc3cgY29uZmlnIiAt
LSBncmFudGVkIHRoZXJlIGFyZSBkaWZmZXJlbmNlcyBpbg0KPiA+ID4gYXBwbGljYXRpb24gY29u
ZmlndXJhdGlvbiAobGF5ZXJzIDUtNykgYnV0IG5vdGhpbmcgdGhhdCBzaG91bGQNCj4gY29tZQ0K
PiA+ID4gY2xvc2UgdG8gYWZmZWN0aW5nIHJvdXRpbmcuDQo+ID4gPiAtLQ0KPiA+ID4gT2xlIENy
YWlnIDxvbGNAbWFjbWlsbGFuLWNyYWlnLm5ldD4NCj4gPiA+DQo+ID4gPiBPbiBXZWQsIDIwMTQt
MDQtMTYgYXQgMTY6NTEgLTAzMDAsIEpvZWwgR2VyYmVyIHdyb3RlOg0KPiA+ID4+IEFyZSB5b3Ug
cnVubmluZyBkaWZmZXJlbnQgdmVyc2lvbnMgb2YgdGhlIExpbnV4IGtlcm5lbD8NCj4gPiA+Pg0K
PiA+ID4+IEknbSBxdWl0ZSBjZXJ0YWluIHRoYXQgdGhlIG9yZGVyIHRoZSByb3V0ZXMgYXJlIGFk
ZGVkIHNob3VsZCBoYXZlDQo+IG5vIHdlaWdodCBvbiB0aGlzIG1hdHRlci4gVGhlcmUgaXMgYWxz
byBhbm90aGVyIHBvc3NpYmlsaXR5LiBZb3UgbWlnaHQNCj4gYmUgcmVuYW1pbmcgdGhlIGludGVy
ZmFjZXMgZGlmZmVyZW50bHkgdGhhdCB0aGUgb3JkZXIgdGhhdCB0aGV5IGFyZQ0KPiBsb2FkZWQg
aW50byB0aGUga2VybmVsIGFzLiBXaGljaGV2ZXIgaW50ZXJmYWNlIHdhcyBsb2FkZWQgZmlyc3Qg
d2lsbA0KPiBoYXZlIHRoZSBzbWFsbGVyIGludGVybmFsIG51bWJlciwgd2hpY2ggaXMgdGhlIG9u
ZSB0aGF0IHdvdWxkIGdldA0KPiBzZWxlY3RlZCBmaXJzdC4NCj4gPiA+Pg0KPiA+ID4+IEpvZWwg
R2VyYmVyDQo+ID4gPj4gTmV0d29yayBTcGVjaWFsaXN0DQo+ID4gPj4gTmV0d29yayBPcGVyYXRp
b25zDQo+ID4gPj4gRWFzdGxpbmsNCj4gPiA+PiBFOiBKb2VsLkdlcmJlckBjb3JwLmVhc3RsaW5r
LmNhIFQ6IDUxOS43ODYuMTI0MQ0KPiA+ID4+DQo+ID4gPj4gLS0tLS1PcmlnaW5hbCBNZXNzYWdl
LS0tLS0NCj4gPiA+PiBGcm9tOiBPbGUgQ3JhaWcgW21haWx0bzpvbGNAbWFjbWlsbGFuLWNyYWln
Lm5ldF0NCj4gPiA+PiBTZW50OiBBcHJpbC0xNi0xNCAxMTowOCBBTQ0KPiA+ID4+IFRvOiBKb2Vs
IEdlcmJlcg0KPiA+ID4+IENjOiBsYXJ0Y0B2Z2VyLmtlcm5lbC5vcmcNCj4gPiA+PiBTdWJqZWN0
OiBSRTogaXByb3V0ZTIgZG9lcyBub3Qgc2VsZWN0IDFzdCBkZWZhdWx0IHJvdXRlIGluIHRhYmxl
Pw0KPiA+ID4+DQo+ID4gPj4gSGVsbG8gSm9lbCwNCj4gPiA+PiBUaGVyZSBtdXN0IGJlIHNvbWV0
aGluZyBlbHNlIGluIHBsYXk7IHdlIG1hbmFnZSBodW5kcmVkcyBvZiBvdGhlcg0KPiBzaW1pbGFy
IGFwcGxpYW5jZXMgYW5kIHRoaXMgaXMgdGhlIG9ubHkgb25lIHRoYXQncyBleGhpYml0aW5nIHRo
aXMNCj4gYmVoYXZpb3IuICgic2ltaWxhciIgPT0gInNhbWUgaGFyZHdhcmUgc3BlYywgc2FtZSBz
b2Z0d2FyZSBzcGVjLCBvbmx5DQo+IHRoZSBJUHMgYXJlIGRpZmZlcmVudCIgLS0gYW5kIHllcywg
bW9zdCBvZiB0aGVtIGhhdmUgZXRoMCBhbmQgZXRoMQ0KPiBzaGFyaW5nIGEgc3VibmV0IGFuZCBn
dywgYW5kIGV0aDEgaXMgYWx3YXlzIHRoZSBkZWZhdWx0IHJvdXRlIGZvcg0KPiBwYWNrZXRzIG5v
dCBidWlsdCB3aXRoIGEgc3BlY2lmaWMgc291cmNlIElQLikNCj4gPiA+Pg0KPiA+ID4+IFRoYW5r
cywNCj4gPiA+PiAgICAgT2xlDQo+ID4gPj4NCj4gPiA+PiBKb2VsIEdlcmJlciA8Sm9lbC5HZXJi
ZXJAY29ycC5lYXN0bGluay5jYT4gd3JvdGU6DQo+ID4gPj4NCj4gPiA+PiA+SGVsbG8gT2xlOw0K
PiA+ID4+ID4NCj4gPiA+PiA+SWYgeW91IGhhdmUgbXVsdGlwbGUgcm91dGVzIHNldCB3aXRoIHRo
ZSBzYW1lIG1ldHJpYyB0byB0aGUgc2FtZQ0KPiBkZXN0aW5hdGlvbiwgYnkgZGVmYXVsdCwgdGhl
IExpbnV4IGtlcm5lbCB3aWxsIGNob29zZSB0aGUgbG93ZXN0DQo+IG51bWJlcmVkIGludGVyZmFj
ZSB0byB1c2UuIFRoaXMgd291bGQgYmUgd2h5IGV0aDAgaXMgYmVpbmcgaGl0IGV2ZXJ5DQo+IHRp
bWUuIEl0IGhhcyBub3RoaW5nIHRvIGRvIHdpdGggeW91ciBpcCBydWxlIGRlZmluaXRpb25zLiBJ
ZiB5b3UNCj4gd2FudGVkIHRvIHByZWZlciBldGgxLCBhZGQgYSBsYXJnZXIgbWV0cmljIGZsYWcg
dG8gdGhlIGV0aDAgcm91dGUsDQo+IHdoaWNoIHdpbGwgY2F1c2UgZXRoMSB0byBiZSB1c2VkIGlu
c3RlYWQuIFRoZW4sIG9ubHkgaW4gdGhlIGV2ZW50IHRoYXQNCj4gZXRoMSBpcyBsaW5rLWRvd24s
IHdpbGwgZXRoMCBiZSB1c2VkLg0KPiA+ID4+ID4NCj4gPiA+PiA+WW91IGNvdWxkIGFsc28gc2V0
dXAgRUNNUCAoRXF1YWwgQ29zdCBNdWx0aSBQYXRoKSB3aGljaCB3b3VsZA0KPiBhbGxvdyB5b3Ug
dG8gbG9hZC1iYWxhbmNlIHRyYWZmaWMgYWNyb3NzIGJvdGggaW50ZXJmYWNlcy4gVG8gZG8gdGhp
cywNCj4gYWRkIHRoZSBlcXVhbGl6ZSBvcHRpb24gdG8geW91ciAyIGRlZmF1bHQgcm91dGVzIHdo
ZW4gYWRkaW5nIHRoZW0uIFlvdQ0KPiBtaWdodCBuZWVkIHRvIHZlcmlmeSB0aGF0IHlvdSBoYXZl
IG11bHRpcGF0aCBzdXBwb3J0IGJha2VkIGludG8geW91cg0KPiBrZXJuZWwgZmlyc3QuDQo+ID4g
Pj4gPg0KPiA+ID4+ID5Kb2VsIEdlcmJlcg0KPiA+ID4+ID5OZXR3b3JrIFNwZWNpYWxpc3QNCj4g
PiA+PiA+TmV0d29yayBPcGVyYXRpb25zDQo+ID4gPj4gPkVhc3RsaW5rDQo+ID4gPj4gPkU6IEpv
ZWwuR2VyYmVyQGNvcnAuZWFzdGxpbmsuY2EgVDogNTE5Ljc4Ni4xMjQxDQo+ID4gPj4gPg0KPiA+
ID4+ID4tLS0tLU9yaWdpbmFsIE1lc3NhZ2UtLS0tLQ0KPiA+ID4+ID5Gcm9tOiBsYXJ0Yy1vd25l
ckB2Z2VyLmtlcm5lbC5vcmcNCj4gW21haWx0bzpsYXJ0Yy1vd25lckB2Z2VyLmtlcm5lbC5vcmdd
IE9uIEJlaGFsZiBPZiBPbGUgQ3JhaWcNCj4gPiA+PiA+U2VudDogQXByaWwtMTYtMTQgNzozNCBB
TQ0KPiA+ID4+ID5UbzogbGFydGNAdmdlci5rZXJuZWwub3JnDQo+ID4gPj4gPlN1YmplY3Q6IGlw
cm91dGUyIGRvZXMgbm90IHNlbGVjdCAxc3QgZGVmYXVsdCByb3V0ZSBpbiB0YWJsZT8NCj4gPiA+
PiA+DQo+ID4gPj4gPkkgYW0gaGF2aW5nIHRoZSBkYW1uZWRlc3QgdGltZSB3aXRoIGEgZHVhbC1J
UCBDZW50T1M1LWJhc2VkDQo+IGFwcGxpYW5jZSB3aGljaCBzZWVtcyB0byBkZWZ5IGl0cyBpcHJv
dXRlMiBjb25maWd1cmF0aW9uLCBhbmQgSSdtIGhlcmUNCj4gaG9waW5nIHNvbWVvbmUgc21hcnRl
ciB0aGFuIG1lIChhZG1pdHRlZGx5IG5vdCBhIGhpZ2ggYmFyKSBtaWdodCBiZSBzbw0KPiBraW5k
IGFzIHRvIHRlbGwgbWUgd2hhdCBJJ20gbWlzc2luZzoNCj4gPiA+PiA+ICAgICAgICAjIGlwIHJv
dXRlIHNob3cgdGFibGUgbWFpbg0KPiA+ID4+ID4gICAgICAgIDEwLjEuMS4xIGRldiB0dW4wICBw
cm90byBrZXJuZWwgIHNjb3BlIGxpbmsgIHNyYw0KPiAxMC4xLjEuNw0KPiA+ID4+ID4gICAgICAg
IDEwLjI1MC4zMi4xIHZpYSAxMC4xLjEuMSBkZXYgdHVuMA0KPiA+ID4+ID4gICAgICAgIDEwLjI1
MC4xMC4wLzI0IHZpYSAxMC4xLjEuMSBkZXYgdHVuMA0KPiA+ID4+ID4gICAgICAgIDE5Mi4xNjgu
MjUuMC8yNCBkZXYgZXRoMCAgcHJvdG8ga2VybmVsICBzY29wZSBsaW5rICBzcmMNCj4gMTkyLjE2
OC4yNS4xMjQNCj4gPiA+PiA+ICAgICAgICAxOTIuMTY4LjI1LjAvMjQgZGV2IGV0aDEgIHByb3Rv
IGtlcm5lbCAgc2NvcGUgbGluayAgc3JjDQo+IDE5Mi4xNjguMjUuMTAwDQo+ID4gPj4gPiAgICAg
ICAgZGVmYXVsdCB2aWEgMTkyLjE2OC4yNS4xIGRldiBldGgxDQo+ID4gPj4gPiAgICAgICAgZGVm
YXVsdCB2aWEgMTkyLjE2OC4yNS4xIGRldiBldGgwDQo+ID4gPj4gPiAgICAgICAgIyBpcCByb3V0
ZSBnZXQgOC44LjguOA0KPiA+ID4+ID4gICAgICAgIDguOC44LjggdmlhIDE5Mi4xNjguMjUuMSBk
ZXYgZXRoMCAgc3JjIDE5Mi4xNjguMjUuMTI0DQo+ID4gPj4gPiAgICAgICAgICAgIGNhY2hlICBt
dHUgMTUwMCBhZHZtc3MgMTQ2MCBob3BsaW1pdCA2NA0KPiA+ID4+ID4NCj4gPiA+PiA+SSBoYXZl
IGJlZW4gcGxheWluZyB3aXRoIHRoaXMgYm94IGZvciBzZXZlcmFsIGRheXMsIGFuZCBubw0KPiBt
YXR0ZXIgd2hhdCBJIGRvIChpbmNsdWRpbmcgcmVib290cykgaXQgd2FudHMgdG8gcm91dGUgYWxt
b3N0DQo+IGV2ZXJ5dGhpbmcgb3V0IGV0aDAgaW5zdGVhZCBvZiBldGgxLCBkZXNwaXRlIHRoZSBv
cmRlcmluZyBvZiBkZWZhdWx0DQo+IHJvdXRlcyBzaG93biBhYm92ZSB3aGljaCBzaG91bGQgc2Vl
IGV0aDEgdGFraW5nIHByZWNlZGVuY2UuIE5vDQo+IGlwdGFibGVzIFBSRVJPVVRJTkcvbmF0L21h
bmdsZS9yYXcgc3R1ZmYsIHRoaXMgaXMgYWxsIHN0cmFpZ2h0DQo+IGlwcm91dGUyLg0KPiA+ID4+
ID4NCj4gPiA+PiA+SSBkZXRlcm1pbmVkIHRoYXQgdGhlICdtYWluJyB0YWJsZSB3YXMgdGhlIG9u
ZSBhdCBpc3N1ZSBieQ0KPiBpbnNlcnRpbmcgYW5kIHJlbW92aW5nIGFuIG92ZXJyaWRpbmcgcnVs
ZSBhdCB2YXJpb3VzIHByaW9yaXRpZXMgdG8gc2VlDQo+IHdoZW4gJ2lwIGdldCcNCj4gPiA+PiA+
d291bGQgY2hhbmdlIGJlaGF2aW9yOg0KPiA+ID4+ID4gICAgICAgICMgaXAgcnVsZSBzaG93IHwg
dGFpbA0KPiA+ID4+ID4gICAgICAgIDMyNzU4OiAgICAgICBmcm9tIGFsbCB0byAxOTIuMTY4Ljcy
LjAvMjQgbG9va3VwDQo+IGRlZnJvdXRlcw0KPiA+ID4+ID4gICAgICAgIDMyNzU5OiAgICAgICBm
cm9tIDE5Mi4xNjguNzIuMC8yNCBsb29rdXAgZGVmcm91dGVzDQo+ID4gPj4gPiAgICAgICAgMzI3
NjA6ICAgICAgIGZyb20gMTkyLjE2OC43Mi4wLzI0IGxvb2t1cCBtZ3Ryb3V0ZXMNCj4gPiA+PiA+
ICAgICAgICAzMjc2NjogICAgICAgZnJvbSBhbGwgbG9va3VwIG1haW4NCj4gPiA+PiA+ICAgICAg
ICAzMjc2NzogICAgICAgZnJvbSBhbGwgbG9va3VwIGRlZmF1bHQNCj4gPiA+PiA+ICAgICAgICAj
IGlwIHJvdXRlIGFkZCB0YWJsZSBjdXN0b20gdG8gOC44LjguMC8yNCB2aWENCj4gMTkyLjE2OC43
Mi4xIGRldiBldGgxIHNyYyAxOTIuMTY4LjcyLjEwMA0KPiA+ID4+ID4gICAgICAgICMgZm9yIGkg
aW4gJChzZXEgMzI3NjcgLTEgMzI3NjQpOyBkbyBpcCBydWxlIGFkZCBwcmlvICRpDQo+IHRvIDgu
OC44LjAvMjQgbG9va3VwIGN1c3RvbTsgaXAgcm91dGUgZmx1c2ggY2FjaGU7IHNsZWVwIDI7IGVj
aG8gLWVuDQo+ICIkaTpcdCI7IGlwIHJvdXRlIGdldCA4LjguOC44fCBoZWFkIC0xOyBpcCBydWxl
IGRlbCBwcmlvICRpIHRvDQo+IDguOC44LjAvMjQgbG9va3VwIGN1c3RvbTsgaXAgcm91dGUgZmx1
c2ggY2FjaGU7IHNsZWVwIDI7IGRvbmUNCj4gPiA+PiA+ICAgICAgICAzMjc2NzogICAgICAgOC44
LjguOCB2aWEgMTkyLjE2OC43Mi4xIGRldiBldGgwICBzcmMNCj4gMTkyLjE2OC43Mi4xMjQNCj4g
PiA+PiA+ICAgICAgICAzMjc2NjogICAgICAgOC44LjguOCB2aWEgMTkyLjE2OC43Mi4xIGRldiBl
dGgwICBzcmMNCj4gMTkyLjE2OC43Mi4xMjQNCj4gPiA+PiA+ICAgICAgICAzMjc2NTogICAgICAg
OC44LjguOCB2aWEgMTkyLjE2OC43Mi4xIGRldiBldGgxICBzcmMNCj4gMTkyLjE2OC43Mi4xMDAN
Cj4gPiA+PiA+ICAgICAgICAzMjc2NDogICAgICAgOC44LjguOCB2aWEgMTkyLjE2OC43Mi4xIGRl
diBldGgxICBzcmMNCj4gMTkyLjE2OC43Mi4xMDANCj4gPiA+PiA+DQo+ID4gPj4gPkJvdGggaW50
ZXJmYWNlcyBhcmUgdXAsIGFuZCBhcmUgKmFibGUqIHRvIHJlYWNoIDguOC44LjggdmlhIHRoZQ0K
PiB1cHN0cmVhbQ0KPiA+ID4+ID5ndzoNCj4gPiA+PiA+ICAgICAgICAjIHBpbmcgLWMgMSAtSSBl
dGgwIDguOC44LjgNCj4gPiA+PiA+ICAgICAgICBQSU5HIDguOC44LjggKDguOC44LjgpIGZyb20g
MTkyLjE2OC43Mi4xMjQgZXRoMDogNTYoODQpDQo+IGJ5dGVzIG9mIGRhdGEuDQo+ID4gPj4gPiAg
ICAgICAgNjQgYnl0ZXMgZnJvbSA4LjguOC44OiBpY21wX3NlcT0xIHR0bD00NyB0aW1lPTE0Ljkg
bXMNCj4gPiA+PiA+DQo+ID4gPj4gPiAgICAgICAgLS0tIDguOC44LjggcGluZyBzdGF0aXN0aWNz
IC0tLQ0KPiA+ID4+ID4gICAgICAgIDEgcGFja2V0cyB0cmFuc21pdHRlZCwgMSByZWNlaXZlZCwg
MCUgcGFja2V0IGxvc3MsIHRpbWUNCj4gMG1zDQo+ID4gPj4gPiAgICAgICAgcnR0IG1pbi9hdmcv
bWF4L21kZXYgPSAxNC45OTAvMTQuOTkwLzE0Ljk5MC8wLjAwMCBtcw0KPiA+ID4+ID4gICAgICAg
ICMgcGluZyAtYyAxIC1JIGV0aDEgOC44LjguOA0KPiA+ID4+ID4gICAgICAgIFBJTkcgOC44Ljgu
OCAoOC44LjguOCkgZnJvbSAxOTIuMTY4LjcyLjEwMCBldGgxOiA1Nig4NCkNCj4gYnl0ZXMgb2Yg
ZGF0YS4NCj4gPiA+PiA+ICAgICAgICA2NCBieXRlcyBmcm9tIDguOC44Ljg6IGljbXBfc2VxPTEg
dHRsPTQ3IHRpbWU9MTQuOSBtcw0KPiA+ID4+ID4NCj4gPiA+PiA+ICAgICAgICAtLS0gOC44Ljgu
OCBwaW5nIHN0YXRpc3RpY3MgLS0tDQo+ID4gPj4gPiAgICAgICAgMSBwYWNrZXRzIHRyYW5zbWl0
dGVkLCAxIHJlY2VpdmVkLCAwJSBwYWNrZXQgbG9zcywgdGltZQ0KPiAwbXMNCj4gPiA+PiA+ICAg
ICAgICBydHQgbWluL2F2Zy9tYXgvbWRldiA9IDE0Ljk5OS8xNC45OTkvMTQuOTk5LzAuMDAwIG1z
DQo+ID4gPj4gPg0KPiA+ID4+ID5DYW4gYW55b25lIGhlbHAgbXkgZmlndXJlIG91dCB3aHkgdGhp
cyBib3ggKGFsb25lIG91dCBvZiBtYW55LA0KPiBtYW55IGFwcGxpYW5jZXMgd2l0aCBzaW1pbGFy
IGNvbmZpZ3VyYXRpb25zIGF0IHZhcmlvdXMgY3VzdG9tZXIgc2l0ZXMpDQo+IGlzIGRldGVybWlu
ZWQgdG8gcmVhY2ggb3V0IHRocm91Z2ggZXRoMD8NCj4gPiA+PiA+DQo+ID4gPj4gPlRoZSBmdWxs
IFJQREIgcnVsZXNldDoNCj4gPiA+PiA+ICAgICAgICAjIGlwIHJ1bGUgc2hvdw0KPiA+ID4+ID4g
ICAgICAgIDA6ICAgZnJvbSBhbGwgbG9va3VwIDI1NQ0KPiA+ID4+ID4gICAgICAgIDEwOiAgZnJv
bSBhbGwgbG9va3VwIGJvb3RzdHJhcA0KPiA+ID4+ID4gICAgICAgIDMyNzM2OiAgICAgICBmcm9t
IGFsbCB0byAxMjguMTE5LjQwLjEgbG9va3VwIG1ndHJvdXRlcw0KPiA+ID4+ID4gICAgICAgIDMy
NzM3OiAgICAgICBmcm9tIGFsbCB0byAxOTIuMTY4LjEyNi4yMjggbG9va3VwDQo+IG1ndHJvdXRl
cw0KPiA+ID4+ID4gICAgICAgIDMyNzM4OiAgICAgICBmcm9tIGFsbCB0byAxOTIuMTY4Ljc2LjIz
MiBsb29rdXAgbWd0cm91dGVzDQo+ID4gPj4gPiAgICAgICAgMzI3Mzk6ICAgICAgIGZyb20gYWxs
IHRvIDE5Mi4xNjguOTAuMTEyIGxvb2t1cCBtZ3Ryb3V0ZXMNCj4gPiA+PiA+ICAgICAgICAzMjc0
MDogICAgICAgZnJvbSBhbGwgdG8gMTkyLjE2OC42MS4xMTIgbG9va3VwIG1ndHJvdXRlcw0KPiA+
ID4+ID4gICAgICAgIDMyNzQxOiAgICAgICBmcm9tIGFsbCB0byAxOTIuMTY4Ljc2LjIzMiBsb29r
dXAgbWd0cm91dGVzDQo+ID4gPj4gPiAgICAgICAgMzI3NDI6ICAgICAgIGZyb20gYWxsIHRvIDE5
Mi4xNjguNjEuMTEyIGxvb2t1cCBtZ3Ryb3V0ZXMNCj4gPiA+PiA+ICAgICAgICAzMjc0MzogICAg
ICAgZnJvbSBhbGwgdG8gMTkyLjE2OC4zNC4zNSBsb29rdXAgbWd0cm91dGVzDQo+ID4gPj4gPiAg
ICAgICAgMzI3NDQ6ICAgICAgIGZyb20gYWxsIHRvIDE5Mi4xNjguNjEuMTEyIGxvb2t1cCBkZWZy
b3V0ZXMNCj4gPiA+PiA+ICAgICAgICAzMjc0NTogICAgICAgZnJvbSBhbGwgdG8gMTkyLjE2OC4x
MzQuNDcgbG9va3VwIG1ndHJvdXRlcw0KPiA+ID4+ID4gICAgICAgIDMyNzQ2OiAgICAgICBmcm9t
IGFsbCB0byAxOTIuMTY4LjEyNy42OCBsb29rdXAgbWd0cm91dGVzDQo+ID4gPj4gPiAgICAgICAg
MzI3NDc6ICAgICAgIGZyb20gYWxsIHRvIDE5Mi4xNjguNjYuNiBsb29rdXAgbWd0cm91dGVzDQo+
ID4gPj4gPiAgICAgICAgMzI3NDg6ICAgICAgIGZyb20gYWxsIHRvIDE5Mi4xNjguMTI2LjIyOCBs
b29rdXANCj4gbWd0cm91dGVzDQo+ID4gPj4gPiAgICAgICAgMzI3NDk6ICAgICAgIGZyb20gYWxs
IHRvIDE5Mi4xNjguMTI3LjY4IGxvb2t1cCBtZ3Ryb3V0ZXMNCj4gPiA+PiA+ICAgICAgICAzMjc1
MDogICAgICAgZnJvbSBhbGwgdG8gMTkyLjE2OC4xMzQuNDEgbG9va3VwIG1ndHJvdXRlcw0KPiA+
ID4+ID4gICAgICAgIDMyNzUxOiAgICAgICBmcm9tIGFsbCB0byAxOTIuMTY4LjEzNC40MSBsb29r
dXAgbWd0cm91dGVzDQo+ID4gPj4gPiAgICAgICAgMzI3NTI6ICAgICAgIGZyb20gYWxsIHRvIDE5
Mi4xNjguNzYuMjMyIGxvb2t1cCBtZ3Ryb3V0ZXMNCj4gPiA+PiA+ICAgICAgICAzMjc1MzogICAg
ICAgZnJvbSBhbGwgdG8gMTA3LjIzLjE1LjE3NSBsb29rdXAgbWd0cm91dGVzDQo+ID4gPj4gPiAg
ICAgICAgMzI3NTQ6ICAgICAgIGZyb20gYWxsIHRvIDIxNi44Ny42OS45NCBsb29rdXAgbWd0cm91
dGVzDQo+ID4gPj4gPiAgICAgICAgMzI3NTU6ICAgICAgIGZyb20gMTkyLjE2OC43Mi4xMjQgbG9v
a3VwIG1ndHJvdXRlcw0KPiA+ID4+ID4gICAgICAgIDMyNzU2OiAgICAgICBmcm9tIDE5Mi4xNjgu
NzIuMTAwIGxvb2t1cCBkZWZyb3V0ZXMNCj4gPiA+PiA+ICAgICAgICAzMjc1NzogICAgICAgZnJv
bSAxOTIuMTY4LjcyLjAvMjQgdG8gMTkyLjE2OC43Mi4wLzI0DQo+IGxvb2t1cCBtZ3Ryb3V0ZXMN
Cj4gPiA+PiA+ICAgICAgICAzMjc1ODogICAgICAgZnJvbSBhbGwgdG8gMTkyLjE2OC43Mi4wLzI0
IGxvb2t1cA0KPiBkZWZyb3V0ZXMNCj4gPiA+PiA+ICAgICAgICAzMjc1OTogICAgICAgZnJvbSAx
OTIuMTY4LjcyLjAvMjQgbG9va3VwIGRlZnJvdXRlcw0KPiA+ID4+ID4gICAgICAgIDMyNzYwOiAg
ICAgICBmcm9tIDE5Mi4xNjguNzIuMC8yNCBsb29rdXAgbWd0cm91dGVzDQo+ID4gPj4gPiAgICAg
ICAgMzI3NjY6ICAgICAgIGZyb20gYWxsIGxvb2t1cCBtYWluDQo+ID4gPj4gPiAgICAgICAgMzI3
Njc6ICAgICAgIGZyb20gYWxsIGxvb2t1cCBkZWZhdWx0DQo+ID4gPj4gPg0KPiA+ID4+ID4NCj4g
PiA+PiA+DQo+ID4gPj4gPiAgICAgVGhhbmsgeW91IGZvciBhbnkgY2x1ZSB5b3UgY2FuIHNwYXJl
LA0KPiA+ID4+ID4gICAgICAgICAgICAgT2xlDQo+ID4gPj4gPi0tDQo+ID4gPj4gPk9sZSBDcmFp
ZyA8b2xjQG1hY21pbGxhbi1jcmFpZy5uZXQ+DQo+ID4gPj4gPg0KPiA+ID4+ID4tLQ0KPiA+ID4+
ID5UbyB1bnN1YnNjcmliZSBmcm9tIHRoaXMgbGlzdDogc2VuZCB0aGUgbGluZSAidW5zdWJzY3Jp
YmUgbGFydGMiDQo+IGluIHRoZSBib2R5IG9mIGEgbWVzc2FnZSB0byBtYWpvcmRvbW9Admdlci5r
ZXJuZWwub3JnIE1vcmUgbWFqb3Jkb21vDQo+IGluZm8gYXQgIGh0dHA6Ly92Z2VyLmtlcm5lbC5v
cmcvbWFqb3Jkb21vLWluZm8uaHRtbA0KPiA+ID4+IHsubisrJd22IHd7Lm4ralwpdypqZyDdomoN
Cj4gPiA+IEcNCj4gPiA+IGo6K3Z3am0gIHdmaNmlDQo+ID4gPg0KPiA+ID4NCj4gPg0KPiA+DQo+
ID4NCj4NCj4NCj4NCj4NCj4NCj4NCj4NCj4gLS0NCj4gY29udGF0b3M6DQo+IENlbHVsYXI6ICgg
OTkgKSA5MTQzLTU5NTQgLSBWaXZvDQo+IHNreXBlOiBsdWNhc2QzY2FzdHJvDQo+IG1zbjogbHVj
YXNjYXN0cm9ib3JnZXNAaG90bWFpbC5jb20NCj4NCj4NCg0KDQo
^ permalink raw reply [flat|nested] 12+ messages in thread
* RE: iproute2 does not select 1st default route in table?
2014-04-16 11:34 iproute2 does not select 1st default route in table? Ole Craig
` (9 preceding siblings ...)
2014-05-20 13:38 ` Joel Gerber
@ 2014-05-20 13:40 ` Joel Gerber
10 siblings, 0 replies; 12+ messages in thread
From: Joel Gerber @ 2014-05-20 13:40 UTC (permalink / raw)
To: lartc
Q29ycmVjdGlvbi4gSSB0aG91Z2h0IEkga25ldyB0aGUgd2h5LCB0aGVuIHJlYWxpemVkIEkgZGlk
bid0LCBoYWxmd2F5IHRocm91Z2ggd3JpdGluZyB0aGF0IGVtYWlsLiBUaGUgb25seSB3aHkgdGhh
dCBtYWtlcyBzZW5zZSBpcyB0aGUga2VybmVsIGlzIG1pc2JlaGF2aW5nLCBkdWUgdG8gc29tZSBz
b3J0IG9mIGJ1ZyBzcGVjaWZpYyB0byBEZXZpYW50J3MgY29uZmlndXJhdGlvbi4gSSBoYXZlIG5v
IGNsdWUgd2hhdCB0aGlzIGNvdWxkIGJlLCBidXQgaXQncyBub3QgcmVsYXRlZCB0byB5b3VyIHJv
dXRpbmcgY29uZmlndXJhdGlvbiBhcyBmYXIgYXMgSSBjYW4gc2VlLg0KDQpKb2VsIEdlcmJlcg0K
TmV0d29yayBTcGVjaWFsaXN0DQpOZXR3b3JrIE9wZXJhdGlvbnMNCkVhc3RsaW5rDQpFOiBKb2Vs
LkdlcmJlckBjb3JwLmVhc3RsaW5rLmNhIFQ6IDUxOS43ODYuMTI0MQ0KDQotLS0tLU9yaWdpbmFs
IE1lc3NhZ2UtLS0tLQ0KRnJvbTogbGFydGMtb3duZXJAdmdlci5rZXJuZWwub3JnIFttYWlsdG86
bGFydGMtb3duZXJAdmdlci5rZXJuZWwub3JnXSBPbiBCZWhhbGYgT2YgSm9lbCBHZXJiZXINClNl
bnQ6IE1heS0yMC0xNCA5OjM4IEFNDQpUbzogT2xlIENyYWlnDQpDYzogbGFydGNAdmdlci5rZXJu
ZWwub3JnDQpTdWJqZWN0OiBSRTogaXByb3V0ZTIgZG9lcyBub3Qgc2VsZWN0IDFzdCBkZWZhdWx0
IHJvdXRlIGluIHRhYmxlPw0KDQpPaywgSSdtIHN0YXJ0aW5nIHRvIGdyb2sgdGhpcyBub3csIGVz
cGVjaWFsbHkgd2l0aCB5b3VyIGRlc2NyaXB0aW9uIGFzIHRvIHRoZSB3aHkncyBvZiB5b3VyIG5l
dHdvcmsgY29uZmlndXJhdGlvbi4gSSBhbHNvIHRoaW5rIEkga25vdyAid2h5IiB0aGlzIGlzIGhh
cHBlbmluZywgdGhvdWdoIGV2ZW4gdGhlIHdoeSBpc24ndCBtYWtpbmcgbXVjaCBzZW5zZS4NCg0K
V2hlbiB5b3VyIG91dGJvdW5kIHJvdXRlIGlzIGNob3NlbiBmb3IgbG9jYWxseSBnZW5lcmF0ZWQg
dHJhZmZpYywgdGhlIExpbnV4IGtlcm5lbCBkb2Vzbid0IGtub3cgeW91ciBzb3VyY2UgSVAgeWV0
LCBzbyBub25lIG9mIHlvdXIgaXAgcnVsZXMgYXJlIGJlaW5nIGFuYWx5emVkLiBBcyB5b3UgaGFk
IHN0YXRlZCBlYXJsaWVyLCBtYWluIGlzIHRoZSB0YWJsZSB0aGF0IHdpbGwgYmUgcXVlcmllZC4N
Cg0KQmFzZWQgdXBvbiB3aGF0IEkgZm91bmQgb25saW5lIGxhc3Qgd2VlaywgdGhlIG9yZGVyIG9m
IHlvdXIgcm91dGVzIHNob3VsZCBiZSB0aGUgb25seSB0aGluZyB0aGF0IG1hdHRlcnMgc2luY2Ug
Ym90aCByb3V0ZXMgYXJlIGlkZW50aWNhbCwgYnV0IHRoYXQgaXMgb2J2aW91c2x5IG5vdCB0aGUg
Y2FzZSBvbiBkZXZpYW50LiBJIGNhbid0IGV4cGxhaW4gdGhpcyBiZWhhdmlvdXIuIEl0J3Mgbm90
IGFjdGluZyBhcyBpdCBzaG91bGQuIFRoYXQgc2FpZCwgSSBrbm93IGEgc2ltcGxlIHNvbHV0aW9u
LiBTZXQgZGlmZmVyZW50IHByaW9yaXR5IHZhbHVlcyBvbiB0aGUgZGVmYXVsdCByb3V0ZXMuIElm
IHlvdSBtYXJrIGV0aDAgYXMgdGhlIGhpZ2hlciBwcmlvcml0eSwgdGhlIGtlcm5lbCAqc2hvdWxk
KiBzZWxlY3QgdGhlIGRlc2lyZWQgcm91dGUuIFlvdSBjYW4gYWxzbyB1c2UgZndtYXJrLCBidXQg
dGhhdCB3b3VsZCBiZSBhIGxvdCBtb3JlIGNvbXBsaWNhdGVkLg0KDQpKb2VsIEdlcmJlcg0KTmV0
d29yayBTcGVjaWFsaXN0DQpOZXR3b3JrIE9wZXJhdGlvbnMNCkVhc3RsaW5rDQpFOiBKb2VsLkdl
cmJlckBjb3JwLmVhc3RsaW5rLmNhIFQ6IDUxOS43ODYuMTI0MSAtLS0tLU9yaWdpbmFsIE1lc3Nh
Z2UtLS0tLQ0KRnJvbTogT2xlIENyYWlnIFttYWlsdG86b2xjQG1hY21pbGxhbi1jcmFpZy5uZXRd
DQpTZW50OiBNYXktMTYtMTQgNDoyOCBQTQ0KVG86IEpvZWwgR2VyYmVyDQpDYzogbHVjYXMgY2Fz
dHJvOyBsYXJ0Y0B2Z2VyLmtlcm5lbC5vcmcNClN1YmplY3Q6IFJlOiBpcHJvdXRlMiBkb2VzIG5v
dCBzZWxlY3QgMXN0IGRlZmF1bHQgcm91dGUgaW4gdGFibGU/DQoNCiAgICBJIHVuZGVyc3RhbmQg
eW91ciBjdXJpb3NpdHkuDQoNCiAgICBUaGUgZGV2aWNlIGluIHF1ZXN0aW9uIGlzIGEgbWFuYWdl
ZCBzZWN1cml0eSBhcHBsaWFuY2Ugd2l0aCBhIGRlc2lnbiByZXF1aXJlbWVudCB0byB1c2Ugc2Vw
YXJhdGUgaW50ZXJmYWNlcyBmb3IgbWFuYWdlbWVudCB0cmFmZmljIHZpY2UgYXBwbGljYXRpb24g
dHJhZmZpYy4NCg0KICAgIFRoZSBkZXZlbG9wZXJzIHdlcmUgYWZyYWlkIG9mIGlwdGFibGVzIGFu
ZCBmd21hcmteV15XXldeV15XaW4gYSBodXJyeSBhbmQgc2hpcHBlZCBhIGRldmljZSBjb25maWd1
cmF0b3IgbWV0aG9kIHRoYXQgY2xhc3NpZmllcyBtYW5hZ2VtZW50IHRyYWZmaWMgc29sZWx5IGJ5
IHJlbW90ZSBJUCAoIldoYXQncyB0aGUgSVAgb2YgeW91ciBYWFhYIHNlcnZlcj8gT0ssIHdlJ2xs
IGFkZCBhIHN0YXRpYyBldGgwIHJvdXRlIGZvciB0aGF0IElQIHNpbmNlIFhYWFggaXMgYSBtYW5h
Z2VtZW50IHByb3RvY29sIikgYW5kIGRlZmF1bHRzIGV2ZXJ5dGhpbmcgZWxzZSB0byBldGgxLioN
Cg0KICAgIE1hbnkgb2Ygb3VyIGN1c3RvbWVycyBkb24ndCBoYXZlIGEgc2VwYXJhdGUgbWFuYWdl
bWVudCBuZXR3b3JrIGluIHRoZWlyIERNWiBzbyB0aGV5IHBsdWcgdXMgaW4gc2lkZS1ieS1zaWRl
IG9uIGEgc2luZ2xlIHN1Ym5ldC4gT3V0IG9mIHJvdWdobHkgNzUgY3VzdG9tZXIgYXBwbGlhbmNl
cyBkZXBsb3llZCB0aGlzIHdheSAoc29tZSBoYXJkd2FyZSwgc29tZQ0KdmlydHVhbGl6ZWQpIERl
dmlhbnQgaGVyZSBpcyB0aGUgb25seSBvbmUgdGhhdCByb3V0ZXMgb3V0IGV0aDAgaW5zdGVhZCBv
ZiBldGgxLg0KDQpKb2VsIGFza2VkIGZvciBzb21lIFJQREIgY29udGV4dDoNCj4gWW91IGhhdmUg
c29tZSBpcCBydWxlcyBsaXN0ZWQsIHJpZ2h0PyBDb3VsZCB5b3UgZ2l2ZSBtZSBgaXAgcnVsZSBs
c2ANCj4gYXMgd2VsbCBhcyBgaXAgcm91dGUgbHMgdGFibGUgeGAgd2hlcmUgeCBpcyBhbGwgdGFi
bGVzIHJlZmVyZW5jZWQgYnkNCj4gYGlwIHJ1bGUgbHNgIGV4Y2VwdCBmb3IgZGVmYXVsdCBhbmQg
bG9jYWw/DQoNCiAgICAgICAgW3Jvb3RAZHZudCB+XSMgaXAgcnVsZSBscyB8IHNhbml6ZQ0KICAg
ICAgICAwOiAgICAgIGZyb20gYWxsIGxvb2t1cCAyNTUNCiAgICAgICAgMTA6ICAgICBmcm9tIGFs
bCBsb29rdXAgYm9vdHN0cmFwDQogICAgICAgIDMyNzM2OiAgZnJvbSBhbGwgdG8gMTI4LjExOS40
MC4xIGxvb2t1cCBtZ3Ryb3V0ZXMNCiAgICAgICAgMzI3Mzc6ICBmcm9tIGFsbCB0byAxOTIuMTY4
LjEyNi4yMjggbG9va3VwIG1ndHJvdXRlcw0KICAgICAgICAzMjczODogIGZyb20gYWxsIHRvIDE5
Mi4xNjguNzYuMjMyIGxvb2t1cCBtZ3Ryb3V0ZXMNCiAgICAgICAgMzI3Mzk6ICBmcm9tIGFsbCB0
byAxOTIuMTY4LjkwLjExMiBsb29rdXAgbWd0cm91dGVzDQogICAgICAgIDMyNzQwOiAgZnJvbSBh
bGwgdG8gMTkyLjE2OC42MS4xMTIgbG9va3VwIG1ndHJvdXRlcw0KICAgICAgICAzMjc0MTogIGZy
b20gYWxsIHRvIDE5Mi4xNjguNzYuMjMyIGxvb2t1cCBtZ3Ryb3V0ZXMNCiAgICAgICAgMzI3NDI6
ICBmcm9tIGFsbCB0byAxOTIuMTY4LjYxLjExMiBsb29rdXAgbWd0cm91dGVzDQogICAgICAgIDMy
NzQzOiAgZnJvbSBhbGwgdG8gMTkyLjE2OC4zNC4zNSBsb29rdXAgbWd0cm91dGVzDQogICAgICAg
IDMyNzQ0OiAgZnJvbSBhbGwgdG8gMTkyLjE2OC42MS4xMTIgbG9va3VwIGRlZnJvdXRlcw0KICAg
ICAgICAzMjc0NTogIGZyb20gYWxsIHRvIDE5Mi4xNjguMTM0LjQ3IGxvb2t1cCBtZ3Ryb3V0ZXMN
CiAgICAgICAgMzI3NDY6ICBmcm9tIGFsbCB0byAxOTIuMTY4LjEyNy42OCBsb29rdXAgbWd0cm91
dGVzDQogICAgICAgIDMyNzQ3OiAgZnJvbSBhbGwgdG8gMTkyLjE2OC42Ni42IGxvb2t1cCBtZ3Ry
b3V0ZXMNCiAgICAgICAgMzI3NDg6ICBmcm9tIGFsbCB0byAxOTIuMTY4LjEyNi4yMjggbG9va3Vw
IG1ndHJvdXRlcw0KICAgICAgICAzMjc0OTogIGZyb20gYWxsIHRvIDE5Mi4xNjguMTI3LjY4IGxv
b2t1cCBtZ3Ryb3V0ZXMNCiAgICAgICAgMzI3NTA6ICBmcm9tIGFsbCB0byAxOTIuMTY4LjEzNC40
MSBsb29rdXAgbWd0cm91dGVzDQogICAgICAgIDMyNzUxOiAgZnJvbSBhbGwgdG8gMTkyLjE2OC4x
MzQuNDEgbG9va3VwIG1ndHJvdXRlcw0KICAgICAgICAzMjc1MjogIGZyb20gYWxsIHRvIDE5Mi4x
NjguNzYuMjMyIGxvb2t1cCBtZ3Ryb3V0ZXMNCiAgICAgICAgMzI3NTM6ICBmcm9tIGFsbCB0byAx
MDcuMjIuMTYuMTc1IGxvb2t1cCBtZ3Ryb3V0ZXMNCiAgICAgICAgMzI3NTQ6ICBmcm9tIGFsbCB0
byAxMjguMTE5LjQxLjY5IGxvb2t1cCBtZ3Ryb3V0ZXMNCiAgICAgICAgMzI3NTU6ICBmcm9tIDE5
Mi4xNjguNzIuMTI0IGxvb2t1cCBtZ3Ryb3V0ZXMNCiAgICAgICAgMzI3NTY6ICBmcm9tIDE5Mi4x
NjguNzIuMTAwIGxvb2t1cCBkZWZyb3V0ZXMNCiAgICAgICAgMzI3NTc6ICBmcm9tIDE5Mi4xNjgu
NzIuMC8yNCB0byAxOTIuMTY4LjcyLjAvMjQgbG9va3VwIG1ndHJvdXRlcw0KICAgICAgICAzMjc1
ODogIGZyb20gYWxsIHRvIDE5Mi4xNjguNzIuMC8yNCBsb29rdXAgZGVmcm91dGVzDQogICAgICAg
IDMyNzU5OiAgZnJvbSAxOTIuMTY4LjcyLjAvMjQgbG9va3VwIGRlZnJvdXRlcw0KICAgICAgICAz
Mjc2MDogIGZyb20gMTkyLjE2OC43Mi4wLzI0IGxvb2t1cCBtZ3Ryb3V0ZXMNCiAgICAgICAgMzI3
NjY6ICBmcm9tIGFsbCBsb29rdXAgbWFpbg0KICAgICAgICAzMjc2NzogIGZyb20gYWxsIGxvb2t1
cCBkZWZhdWx0DQogICAgICAgIFtyb290QGR2bnQgfl0jIGZvciB0YmwgaW4gYm9vdHN0cmFwIG1n
dHJvdXRlcyBkZWZyb3V0ZXMgbWFpbjsgZG8gZWNobyAkdGJsICYmIGlwIHJvdXRlIGxzIHRhYmxl
ICR0YmwgOyBkb25lDQogICAgICAgIGJvb3RzdHJhcA0KICAgICAgICAxNzIuMTYuMTI4LjcwIHZp
YSAxOTIuMTY4LjcyLjEgZGV2IGV0aDAgIHNyYyAxOTIuMTY4LjcyLjEyNA0KICAgICAgICAxMjgu
MTE5LjQxLjY5IHZpYSAxOTIuMTY4LjcyLjEgZGV2IGV0aDAgIHNyYyAxOTIuMTY4LjcyLjEyNA0K
ICAgICAgICAxOTIuMTY4LjEuMTAgdmlhIDE5Mi4xNjguNzIuMSBkZXYgZXRoMCAgc3JjIDE5Mi4x
NjguNzIuMTI0DQogICAgICAgIG1ndHJvdXRlcw0KICAgICAgICAxOTIuMTY4LjcyLjAvMjQgZGV2
IGV0aDAgIHNjb3BlIGxpbmsgIHNyYyAxOTIuMTY4LjcyLjEyNA0KICAgICAgICBkZWZhdWx0IHZp
YSAxOTIuMTY4LjcyLjEgZGV2IGV0aDAgIHNyYyAxOTIuMTY4LjcyLjEyNA0KICAgICAgICBkZWZy
b3V0ZXMNCiAgICAgICAgMTkyLjE2OC43Mi4wLzI0IGRldiBldGgxICBzY29wZSBsaW5rICBzcmMg
MTkyLjE2OC43Mi4xMDANCiAgICAgICAgZGVmYXVsdCB2aWEgMTkyLjE2OC43Mi4xIGRldiBldGgx
ICBzcmMgMTkyLjE2OC43Mi4xMDANCiAgICAgICAgbWFpbg0KICAgICAgICAxMC4xLjEuMSBkZXYg
dHVuMCAgcHJvdG8ga2VybmVsICBzY29wZSBsaW5rICBzcmMgMTAuMS4xLjcNCiAgICAgICAgMTAu
MjUwLjMyLjEgdmlhIDEwLjEuMS4xIGRldiB0dW4wDQogICAgICAgIDEwLjI1MC4xMC4wLzI0IHZp
YSAxMC4xLjEuMSBkZXYgdHVuMA0KICAgICAgICAxOTIuMTY4LjcyLjAvMjQgZGV2IGV0aDAgIHBy
b3RvIGtlcm5lbCAgc2NvcGUgbGluayAgc3JjIDE5Mi4xNjguNzIuMTI0DQogICAgICAgIDE5Mi4x
NjguNzIuMC8yNCBkZXYgZXRoMSAgcHJvdG8ga2VybmVsICBzY29wZSBsaW5rICBzcmMgMTkyLjE2
OC43Mi4xMDANCiAgICAgICAgZGVmYXVsdCB2aWEgMTkyLjE2OC43Mi4xIGRldiBldGgxDQogICAg
ICAgIGRlZmF1bHQgdmlhIDE5Mi4xNjguNzIuMSBkZXYgZXRoMA0KICAgICAgICBbcm9vdEBkdm50
IH5dIw0KDQoNCiAgICAgICAgVGhhbmtzLA0KICAgICAgICAgICAgICAgIE9sZQ0KDQoqIEkgaGF2
ZSBhbiBpY2Vib3hlZCBkZXYgc3RvcnkgdG8gcmVmYWN0b3IgdGhlIGltcGxlbWVudGF0aW9uIHVz
aW5nIGZ3bWFyayBvbiBhIHByb3RvY29sL3RhcmdldCBJUCBtYXRjaCBpbnN0ZWFkIG9mIHBlci1J
UCBzdGF0aWMgcm91dGVzLCBidXQgdGhhdCBzdG9yeSdzIGJlZW4gd2FpdGluZyBmb3IgYSBjYXN1
cyBiZWxsaS4gTWF5YmUgdGhpcyB3aWxsIHN1ZmZpY2UuLi4NCg0KT24gRnJpLCAyMDE0LTA1LTE2
IGF0IDA4OjMzIC0wMzAwLCBKb2VsIEdlcmJlciB3cm90ZToNCj4gSXQgY291bGQgYmUgdXNlZCBm
b3Ig4oCccmVkdW5kYW5jeeKAnSwgYnV0IGEgZmFyIGJldHRlciBvcHRpb24gaXMgYm9uZGVkDQo+
IGludGVyZmFjZXMuIEnigJltIGhvbmVzdGx5IG5vdCBzdXJlIHdoeSBPbGUgaGFzIHRoZSBuZXR3
b3JrDQo+IGNvbmZpZ3VyYXRpb24gaW4gcGxhY2UgdGhhdCBoZSBkb2VzLCBub3QgdGhhdCB0aGF0
IG1lYW5zIHRoYXQgaXTigJlzIG5vdA0KPiBhIHdvcmthYmxlIGNvbmZpZ3VyYXRpb24uDQo+DQo+
DQo+DQo+IEpvZWwgR2VyYmVyDQo+IE5ldHdvcmsgQWRtaW5pc3RyYXRvcg0KPiBOZXR3b3JrIE9w
ZXJhdGlvbnMNCj4gRWFzdGxpbmsNCj4gRTogSm9lbC5HZXJiZXJAY29ycC5lYXN0bGluay5jYSBU
OiA1MTkuNzg2LjEyNDENCj4NCj4NCj4NCj4gRnJvbTogbHVjYXMgY2FzdHJvIFttYWlsdG86bHVj
YXNjYXN0cm9ib3JnZXNAZ21haWwuY29tXQ0KPiBTZW50OiBNYXktMTUtMTQgOTowNSBQTQ0KPiBU
bzogSm9lbCBHZXJiZXINCj4gQ2M6IE9sZSBDcmFpZzsgbGFydGNAdmdlci5rZXJuZWwub3JnDQo+
IFN1YmplY3Q6IFJlOiBpcHJvdXRlMiBkb2VzIG5vdCBzZWxlY3QgMXN0IGRlZmF1bHQgcm91dGUg
aW4gdGFibGU/DQo+DQo+DQo+DQo+DQo+IElzIHRoYXQgdHdvIGludGVyZmFjZSBpbiB0aGUgc2Ft
ZSBuZXR3b3JrIGFuZCBzdWJuZXQgZm9yIEhpZ2gNCj4gQXZhaWxhYmxlID8NCj4NCj4NCj4gSSd2
ZSBuZXZlciB0cmllZCB0d28gaW50ZXJmYWNlIGluIHRoZSBzYW1lIG5ldHdvcmsvc3VibmV0IGlu
dG8gdHdvDQo+IGRpZmZlcmVudCBpbnRlcmZhY2UuDQo+DQo+DQo+DQo+DQo+IE9uIFRodSwgTWF5
IDE1LCAyMDE0IGF0IDQ6MjUgUE0sIEpvZWwgR2VyYmVyDQo+IDxKb2VsLkdlcmJlckBjb3JwLmVh
c3RsaW5rLmNhPiB3cm90ZToNCj4NCj4gSSdtIGhvbmVzdGx5IHN0dW1wZWQgcmlnaHQgbm93LiBZ
b3VyIHJvdXRlIGNhY2hlIGlzIGdldHRpbmcgcG9wdWxhdGVkDQo+IHdpdGggYSByb3V0ZSB0aGF0
IHlvdXIgaXAgcm91dGUgc2hvdyBtYXRjaCBjb21tYW5kIGRpc2FncmVlcyB3aXRoLg0KPiBZb3Vy
IGRldmlhbnQgYm94IGlzIHF1aXRlIGRldmlhbnQuDQo+DQo+IFlvdSBoYXZlIHNvbWUgaXAgcnVs
ZXMgbGlzdGVkLCByaWdodD8gQ291bGQgeW91IGdpdmUgbWUgYGlwIHJ1bGUgbHNgDQo+IGFzIHdl
bGwgYXMgYGlwIHJvdXRlIGxzIHRhYmxlIHhgIHdoZXJlIHggaXMgYWxsIHRhYmxlcyByZWZlcmVu
Y2VkIGJ5DQo+IGBpcCBydWxlIGxzYCBleGNlcHQgZm9yIGRlZmF1bHQgYW5kIGxvY2FsPw0KPg0K
Pg0KPiBKb2VsIEdlcmJlcg0KPiBOZXR3b3JrIFNwZWNpYWxpc3QNCj4gTmV0d29yayBPcGVyYXRp
b25zDQo+IEVhc3RsaW5rDQo+IEU6IEpvZWwuR2VyYmVyQGNvcnAuZWFzdGxpbmsuY2EgVDogNTE5
Ljc4Ni4xMjQxIC0tLS0tT3JpZ2luYWwNCj4gTWVzc2FnZS0tLS0tDQo+IEZyb206IE9sZSBDcmFp
ZyBbbWFpbHRvOm9sY0BtYWNtaWxsYW4tY3JhaWcubmV0XQ0KPg0KPg0KPiBTZW50OiBNYXktMTMt
MTQgNzozNSBQTQ0KPiBUbzogQW50b24gRGFuaWxvdg0KPiBDYzogSm9lbCBHZXJiZXI7IGxhcnRj
QHZnZXIua2VybmVsLm9yZw0KPiBTdWJqZWN0OiBSZTogaXByb3V0ZTIgZG9lcyBub3Qgc2VsZWN0
IDFzdCBkZWZhdWx0IHJvdXRlIGluIHRhYmxlPw0KPg0KPiBBbnRvbiwgSm9lbCAtDQo+ICAgICBI
ZXJlJ3MgdGhlIG91dHB1dCBvZiBpcCByb3V0ZSBzaG93IGNhY2hlIDguOC44LjgsIGlwIHJvdXRl
IHNob3cNCj4gbWF0Y2ggOC44LjguOCwgYW5kIGlwIHJvdXRlIGdldCA4LjguOC44DQo+DQo+IC4u
Lm9uIERldmlhbnQ6DQo+ICAgICAgICAgW3Jvb3RAZHZudCB+XSMgaXAgcm91dGUgc2hvdyBjYWNo
ZSA4LjguOC44DQo+ICAgICAgICAgOC44LjguOCB2aWEgMTkyLjE2OC43Mi4xIGRldiBldGgwICBz
cmMgMTkyLjE2OC43Mi4xMjQNCj4gICAgICAgICAgICAgY2FjaGUgIG10dSAxNTAwIGFkdm1zcyAx
NDYwIGhvcGxpbWl0IDY0DQo+ICAgICAgICAgOC44LjguOCBmcm9tIDE5Mi4xNjguNzIuMTI0IHZp
YSAxOTIuMTY4LjcyLjEgZGV2IGV0aDANCj4gICAgICAgICAgICAgY2FjaGUgIG10dSAxNTAwIGFk
dm1zcyAxNDYwIGhvcGxpbWl0IDY0DQo+ICAgICAgICAgW3Jvb3RAZHZudCB+XSMgaXAgcm91dGUg
c2hvdyBtYXRjaCA4LjguOC44DQo+ICAgICAgICAgZGVmYXVsdCB2aWEgMTkyLjE2OC43Mi4xIGRl
diBldGgxDQo+ICAgICAgICAgZGVmYXVsdCB2aWEgMTkyLjE2OC43Mi4xIGRldiBldGgwDQo+ICAg
ICAgICAgW3Jvb3RAZHZudCB+XSMgaXAgcm91dGUgZ2V0IDguOC44LjgNCj4gICAgICAgICA4Ljgu
OC44IHZpYSAxOTIuMTY4LjcyLjEgZGV2IGV0aDAgIHNyYyAxOTIuMTY4LjcyLjEyNA0KPiAgICAg
ICAgICAgICBjYWNoZSAgbXR1IDE1MDAgYWR2bXNzIDE0NjAgaG9wbGltaXQgNjQNCj4NCj4gLi4u
b24gTm9ybToNCj4gICAgICAgICBbcm9vdEBub3JtIH5dIyBpcCByb3V0ZSBzaG93IGNhY2hlIDgu
OC44LjgNCj4gICAgICAgICA4LjguOC44IHZpYSAxOTIuMTY4LjcyLjEgZGV2IGV0aDEgIHNyYyAx
OTIuMTY4LjcyLjk5DQo+ICAgICAgICAgICAgIGNhY2hlICBtdHUgMTUwMCBhZHZtc3MgMTQ2MCBo
b3BsaW1pdCA2NA0KPiAgICAgICAgIDguOC44LjggZnJvbSAxOTIuMTY4LjcyLjk5IHZpYSAxOTIu
MTY4LjcyLjEgZGV2IGV0aDENCj4gICAgICAgICAgICAgY2FjaGUgIG10dSAxNTAwIGFkdm1zcyAx
NDYwIGhvcGxpbWl0IDY0DQo+ICAgICAgICAgW3Jvb3RAbm9ybSB+XSMgIGlwIHJvdXRlIHNob3cg
bWF0Y2ggOC44LjguOA0KPiAgICAgICAgIGRlZmF1bHQgdmlhIDE5Mi4xNjguNzIuMSBkZXYgZXRo
MQ0KPiAgICAgICAgIGRlZmF1bHQgdmlhIDE5Mi4xNjguNzIuMSBkZXYgZXRoMA0KPiAgICAgICAg
IFtyb290QG5vcm0gfl0jIGlwIHJvdXRlIGdldCA4LjguOC44DQo+ICAgICAgICAgOC44LjguOCB2
aWEgMTkyLjE2OC43Mi4xIGRldiBldGgxICBzcmMgMTkyLjE2OC43Mi45OQ0KPiAgICAgICAgICAg
ICBjYWNoZSAgbXR1IDE1MDAgYWR2bXNzIDE0NjAgaG9wbGltaXQgNjQNCj4NCj4NCj4gICAgICAg
ICBUaGFua3MsDQo+ICAgICAgICAgICAgICAgICBPbGUNCj4NCj4gT24gVHVlLCAyMDE0LTA1LTEz
IGF0IDAwOjA1ICswNDAwLCBBbnRvbiBEYW5pbG92IHdyb3RlOg0KPiA+IEhpLCBKb2VsLg0KPiA+
IFBsZWFzZSB1c2UgJ2lwIHJvdXRlIGdldCcgYW5kICdpcCByb3V0ZSBzaG93IG1hdGNoJyBjb21t
YW5kcyBmb3INCj4gPiB0cm91Ymxlc2hvb3Rpbmcgb2Ygcm91dGUgc2VsZWN0aW9uLg0KPiA+IFNv
bWUgZXhhbXBsZXM6DQo+ID4gaXAgcm91dGUgZ2V0IDxkc3Q+IGZyb20gPHNyYz4gaWlmIDxsYW4t
aWZhY2U+IC0gc2hvdyByb3V0ZSBmb3INCj4gdHJhbnNpdA0KPiA+IHBhY2tldHMgKG5vdCBsb2Nh
bC1vcmlnaW5hdGVkKS4NCj4gPiBpcCByb3V0ZSBzaG93IG1hdGNoIDxwcmVmaXg+IC0gc2hvdyBh
bGwgbWF0aGVkIHJvdXRlcyAod2l0aA0KPiBkaWZmZXJlbnQNCj4gPiBwcmVmaXggbGVuZ3RoKS4N
Cj4gPg0KPiA+IDIwMTQtMDUtMTIgMTU6NTIgR01UKzA0OjAwIEpvZWwgR2VyYmVyDQo+IDxKb2Vs
LkdlcmJlckBjb3JwLmVhc3RsaW5rLmNhPjoNCj4gPiA+IEknbSBnZXR0aW5nIGNvbmZ1c2VkIG5v
dy4gSSBkaWQgc29tZSBvbmxpbmUgcmVhZGluZywgYW5kIEkndmUNCj4gZm91bmQgdGhlIGZvbGxv
d2luZzoNCj4gPiA+DQo+ID4gPiBJZiBzZXZlcmFsIHJvdXRlcyBtYXRjaCB0aGUgcGFja2V0LCB0
aGUgZm9sbG93aW5nIHBydW5pbmcgcnVsZXMNCj4gYXJlIHVzZWQgdG8gc2VsZWN0IHRoZSBiZXN0
IG9uZToNCj4gPiA+DQo+ID4gPiAgICAxLiBUaGUgbG9uZ2VzdCBtYXRjaGluZyBwcmVmaXggaXMg
c2VsZWN0ZWQ7IGFsbCBzaG9ydGVyIG9uZXMNCj4gYXJlIGRyb3BwZWQuDQo+ID4gPiAgICAyLiBJ
ZiB0aGUgVE9TIG9mIHNvbWUgcm91dGUgd2l0aCB0aGUgbG9uZ2VzdCBwcmVmaXggaXMgZXF1YWwg
dG8NCj4gdGhlIFRPUyBvZiB0aGUgcGFja2V0LCByb3V0ZXMgd2l0aCBkaWZmZXJlbnQgVE9TIGFy
ZSBkcm9wcGVkLg0KPiA+ID4gICAgMy4gSWYgbm8gZXhhY3QgVE9TIG1hdGNoIGlzIGZvdW5kIGFu
ZCByb3V0ZXMgd2l0aCBUT1M9MCBleGlzdCwNCj4gdGhlIHJlc3Qgb2YgdGhlIHJvdXRlcyBhcmUg
cHJ1bmVkLiBPdGhlcndpc2UgdGhlIHJvdXRlIGxvb2t1cCBmYWlscy4NCj4gPiA+ICAgIDQuIElm
IHNldmVyYWwgcm91dGVzIHJlbWFpbiBhZnRlciBzdGVwcyAxLTMgaGF2ZSBiZWVuIHRyaWVkLA0K
PiB0aGVuIHJvdXRlcyB3aXRoIHRoZSBiZXN0IHByZWZlcmVuY2UgdmFsdWUgYXJlIHNlbGVjdGVk
Lg0KPiA+ID4gICAgNS4gSWYgc2V2ZXJhbCByb3V0ZXMgc3RpbGwgZXhpc3QsIHRoZW4gdGhlIGZp
cnN0IG9mIHRoZW0gaXMNCj4gc2VsZWN0ZWQuDQo+ID4gPg0KPiA+ID4NCj4gaHR0cDovL3d3dy5z
b2Z0cGFub3JhbWEub3JnL05ldC9JbnRlcm5ldF9sYXllci9Sb3V0aW5nL3BvbGljeV9yb3V0aW5n
Lg0KPiBzaHRtbA0KPiA+ID4NCj4gPiA+IEknbSBoYXZpbmcgYSBoYXJkIHRpbWUgZmluZGluZyBh
bnl0aGluZyBtb3JlIG9mZmljaWFsIHRoYXQgc3RhdGVzDQo+IHRoaXMsIGFuZCB3aXRob3V0IGxv
b2tpbmcgYXQgdGhlIGtlcm5lbCBzb3VyY2UgY29kZSBJIGNhbid0IGJlIDEwMCUNCj4gY2VydGFp
biwgYnV0IGl0IHNlZW1zIHRoYXQgdGhlIGZpcnN0IHJvdXRlIGxpc3RlZCBzaG91bGQgYmUgc2Vs
ZWN0ZWQsDQo+IHdoZW4gdGhlcmUgYXJlIG11bHRpcGxlIG1hdGNoZXMuDQo+ID4gPg0KPiA+ID4g
SGVyZSdzIHNvbWV0aGluZyBlbHNlIHRvIHRyeSwgcnVuIHRoZSBjb21tYW5kICJpcCByb3V0ZSBz
aG93DQo+IGNhY2hlIiBhbmQgcGFzdGUgdGhlIGNvbnRlbnRzIGhlcmUuIEFzIHRoZSBjYWNoZSBp
cyB0aGUgZmlyc3QgdGhpbmcNCj4gcXVlcmllZCBiZWZvcmUgbG9va2luZyBhdCB5b3VyIHJvdXRp
bmcgbGlzdCwgSSdtIGN1cmlvdXMgdG8gc2VlIHdoYXQNCj4gaXQgc2hvd3MuDQo+ID4gPg0KPiA+
ID4gSm9lbCBHZXJiZXINCj4gPiA+IE5ldHdvcmsgU3BlY2lhbGlzdA0KPiA+ID4gTmV0d29yayBP
cGVyYXRpb25zDQo+ID4gPiBFYXN0bGluaw0KPiA+ID4gRTogSm9lbC5HZXJiZXJAY29ycC5lYXN0
bGluay5jYSBUOiA1MTkuNzg2LjEyNDEgLS0tLS1PcmlnaW5hbA0KPiA+ID4gTWVzc2FnZS0tLS0t
DQo+ID4gPiBGcm9tOiBPbGUgQ3JhaWcgW21haWx0bzpvbGNAbWFjbWlsbGFuLWNyYWlnLm5ldF0N
Cj4gPiA+IFNlbnQ6IE1heS0wOS0xNCA0OjE0IFBNDQo+ID4gPiBUbzogSm9lbCBHZXJiZXINCj4g
PiA+IENjOiBsYXJ0Y0B2Z2VyLmtlcm5lbC5vcmcNCj4gPiA+IFN1YmplY3Q6IFJlOiBpcHJvdXRl
MiBkb2VzIG5vdCBzZWxlY3QgMXN0IGRlZmF1bHQgcm91dGUgaW4gdGFibGU/DQo+ID4gPg0KPiA+
ID4gSm9lbCwgZXQgYWwgLQ0KPiA+ID4gICAgICAgICBUTDtEUjogYmVoYXZpb3IgYXQgaXNzdWUg
ZGlmZmVycyBiZXR3ZWVuIDIgYm94ZXMgd2hpY2ggYXJlDQo+IDEgSVANCj4gPiA+ICAgICAgICAg
YWRkcmVzcyBhcGFydCB3aXRoIGlkZW50aWNhbCBody9zdyBsb2Fkczsgc2FtZSBrZXJuZWw7DQo+
IGludGVyZmFjZQ0KPiA+ID4gICAgICAgICBudW1iZXJpbmcgdW5jaGFuZ2VkIGFmdGVyIGtlcm5l
bCBwcm9iaW5nLiBXaGF0IGdpdmVzPyBXaGF0DQo+IGFtIEkNCj4gPiA+ICAgICAgICAgbWlzc2lu
Zz8NCj4gPiA+DQo+ID4gPiAoQXBvbG9naWVzIGZvciB0aGUgZGVsYXllZCByZXNwb25zZSwgbGlm
ZSBhcm91bmQgaGVyZSBoYXMgYmVlbg0KPiBmcmFudGljDQo+ID4gPiBhbmQgdGhpcyBoYXMgYmVl
biBzaXR0aW5nIGFyb3VuZCBoYWxmLWNvbXBvc2VkIGluIG15IG1haWwgY2xpZW50LikNCj4gPiA+
DQo+ID4gPiBEZXRhaWxzOg0KPiA+ID4gICAgIE9rLCBJIGhhdmUgdHdvIGR1YWwtaW50ZXJmYWNl
IGJveGVzIHNpdHRpbmcgbmV4dCB0byBlYWNoIG90aGVyDQo+IG9uDQo+ID4gPiB0aGlzIGN1c3Rv
bWVyJ3MgbmV0d29yay4gVGhlIGZpcnN0IGJveCBpcyB0aGUgb25lIHdlJ3ZlIGJlZW4NCj4gZGlz
Y3Vzc2luZywNCj4gPiA+IEknbGwgY2FsbCBoaW0gIkRldmlhbnQiIGZyb20gbm93IG9uLiBUaGUg
c2Vjb25kIGJveCAoaGVyZWluYWZ0ZXINCj4gIk5vcm0iKQ0KPiA+ID4gaXMgYWN0aW5nIGp1c3Qg
bGlrZSB0aGUgcmVzdCBvZiB0aGUgYXBwbGlhbmNlcyBpbiBvdXIgZmxlZXQsIGkuZS4NCj4gPiA+
IHJvdXRpbmcgb3V0IGV0aDEgYnkgZGVmYXVsdC4gSG9waW5nIHRoYXQgY29tcGFyaW5nIHRoZXNl
IHR3bw0KPiAod2hpY2ggYXJlDQo+ID4gPiBpZGVudGljYWwgV1JUIGJvdGggaGFyZHdhcmUgYW5k
IHNvZnR3YXJlIGNvbmZpZyopIGNhbiBsZWFkIHRvIGENCj4gbW9yZQ0KPiA+ID4gaW5mb3JtZWQv
cHJlY2lzZSBjb25jbHVzaW9uIGFzIHRvIHdoYXQncyBjYXVzaW5nIHRoZW0gdG8gYmVoYXZlDQo+
ID4gPiBkaWZmZXJlbnRseSAoYW5kIG1heWJlIHNvbWUgaWRlYXMgZm9yIHJlLW5vcm1pbmcgRGV2
aWFudDsNCj4gYXJiaXRyYXJ5DQo+ID4gPiByb3V0aW5nIGlzIE5vdCBNeSBLaW5rLjopDQo+ID4g
Pg0KPiA+ID4ga2VybmVsIGluc2VydGlvbiBvcmRlciBvbiBEZXZpYW50Og0KPiA+ID4gICAgICAg
ICBbcm9vdEBkdm50IH5dIyB1bmFtZSAtYQ0KPiA+ID4gICAgICAgICBMaW51eCBkdm50LmV4YW1w
bGUuY29tIDIuNi4xOC0zNDguNC4xLmVsNSAjMSBTTVAgVHVlIEFwcg0KPiAxNiAxNTo0MDowNiBF
RFQgMjAxMyB4ODZfNjQgeDg2XzY0IHg4Nl82NCBHTlUvTGludXgNCj4gPiA+ICAgICAgICAgW3Jv
b3RAZHZudCB+XSMgZG1lc2cgfCBlZ3JlcCAnZXRoLjogXCgnDQo+ID4gPiAgICAgICAgIGlnYiAw
MDAwOjAxOjAwLjA6IGV0aDA6IChQQ0llOjIuNUdiL3M6V2lkdGggeDQpDQo+ID4gPiAgICAgICAg
IDAwOjI1OjkwOjMwOjI4OjZjDQo+ID4gPiAgICAgICAgIGlnYiAwMDAwOjAxOjAwLjE6IGV0aDE6
IChQQ0llOjIuNUdiL3M6V2lkdGggeDQpDQo+ID4gPiAgICAgICAgIDAwOjI1OjkwOjMwOjI4OjZk
DQo+ID4gPiBkZXZpY2U8LS0+YWRkcmVzcyBtYXBwaW5nIG9uIERldmlhbnQ6DQo+ID4gPiAgICAg
ICAgIFtyb290QGR2bnQgfl0jIGlwIGxpbmsgc2hvdw0KPiA+ID4gICAgICAgICAxOiBsbzogPExP
T1BCQUNLLFVQLExPV0VSX1VQPiBtdHUgMTY0MzYgcWRpc2Mgbm9xdWV1ZQ0KPiA+ID4gICAgICAg
ICAgICAgbGluay9sb29wYmFjayAwMDowMDowMDowMDowMDowMCBicmQgMDA6MDA6MDA6MDA6MDA6
MDANCj4gPiA+ICAgICAgICAgMjogZXRoMDogPEJST0FEQ0FTVCxNVUxUSUNBU1QsVVAsTE9XRVJf
VVA+IG10dSAxNTAwIHFkaXNjDQo+ID4gPiAgICAgICAgIHBmaWZvX2Zhc3QgcWxlbiAxMDAwDQo+
ID4gPiAgICAgICAgICAgICBsaW5rL2V0aGVyIDAwOjI1OjkwOjMwOjI4OjZjIGJyZCBmZjpmZjpm
ZjpmZjpmZjpmZg0KPiA+ID4gICAgICAgICAzOiBldGgxOiA8QlJPQURDQVNULE1VTFRJQ0FTVCxV
UCxMT1dFUl9VUD4gbXR1IDE1MDAgcWRpc2MNCj4gPiA+ICAgICAgICAgcGZpZm9fZmFzdCBxbGVu
IDEwMDANCj4gPiA+ICAgICAgICAgICAgIGxpbmsvZXRoZXIgMDA6MjU6OTA6MzA6Mjg6NmQgYnJk
IGZmOmZmOmZmOmZmOmZmOmZmDQo+ID4gPiBMaW5rIHN0YXR1cyBvbiBEZXZpYW50Og0KPiA+ID4g
ICAgICAgICBbcm9vdEBkdm50IH5dIyBmb3IgaSBpbiAwIDE7IGRvIGVjaG8gLW4gImV0aCRpOiAi
OyBldGh0b29sDQo+IGV0aCRpIHwgZ3JlcCBMaW5rOyBkb25lDQo+ID4gPiAgICAgICAgIGV0aDA6
ICAgTGluayBkZXRlY3RlZDogeWVzDQo+ID4gPiAgICAgICAgIGV0aDE6ICAgTGluayBkZXRlY3Rl
ZDogeWVzDQo+ID4gPg0KPiA+ID4NCj4gPiA+IGtlcm5lbCBpbnNlcnRpb24gb3JkZXIgb24gTm9y
bToNCj4gPiA+ICAgICAgICAgW3Jvb3RAbm9ybSB+XSMgdW5hbWUgLWENCj4gPiA+ICAgICAgICAg
TGludXggbm9ybS5leGFtcGxlLmNvbSAyLjYuMTgtMzQ4LjQuMS5lbDUgIzEgU01QIFR1ZSBBcHIN
Cj4gMTYgMTU6NDA6MDYgRURUIDIwMTMgeDg2XzY0IHg4Nl82NCB4ODZfNjQgR05VL0xpbnV4DQo+
ID4gPiAgICAgICAgIFtyb290QG5vcm0gfl0jIGRtZXNnIHwgZWdyZXAgJ2V0aC46IFwoJw0KPiA+
ID4gICAgICAgICBpZ2IgMDAwMDowMTowMC4wOiBldGgwOiAoUENJZToyLjVHYi9zOldpZHRoIHg0
KQ0KPiAwMDoyNTo5MDozMDoyYzpmOA0KPiA+ID4gICAgICAgICBpZ2IgMDAwMDowMTowMC4xOiBl
dGgxOiAoUENJZToyLjVHYi9zOldpZHRoIHg0KQ0KPiAwMDoyNTo5MDozMDoyYzpmOQ0KPiA+ID4g
ZGV2aWNlPC0tPmFkZHJlc3MgbWFwIG9uIE5vcm06DQo+ID4gPiAgICAgICAgIFtyb290QG5vcm0g
fl0jIGlwIGxpbmsgc2hvdw0KPiA+ID4gICAgICAgICAxOiBsbzogPExPT1BCQUNLLFVQLExPV0VS
X1VQPiBtdHUgMTY0MzYgcWRpc2Mgbm9xdWV1ZQ0KPiA+ID4gICAgICAgICAgICAgbGluay9sb29w
YmFjayAwMDowMDowMDowMDowMDowMCBicmQgMDA6MDA6MDA6MDA6MDA6MDANCj4gPiA+ICAgICAg
ICAgMjogZXRoMDogPEJST0FEQ0FTVCxNVUxUSUNBU1QsVVAsTE9XRVJfVVA+IG10dSAxNTAwIHFk
aXNjDQo+IHBmaWZvX2Zhc3QgcWxlbiAxMDAwDQo+ID4gPiAgICAgICAgICAgICBsaW5rL2V0aGVy
IDAwOjI1OjkwOjMwOjJjOmY4IGJyZCBmZjpmZjpmZjpmZjpmZjpmZg0KPiA+ID4gICAgICAgICAz
OiBldGgxOiA8QlJPQURDQVNULE1VTFRJQ0FTVCxVUCxMT1dFUl9VUD4gbXR1IDE1MDAgcWRpc2MN
Cj4gcGZpZm9fZmFzdCBxbGVuIDEwMDANCj4gPiA+ICAgICAgICAgICAgIGxpbmsvZXRoZXIgMDA6
MjU6OTA6MzA6MmM6ZjkgYnJkIGZmOmZmOmZmOmZmOmZmOmZmDQo+ID4gPiBMaW5rIHN0YXR1cyBv
biBOb3JtOg0KPiA+ID4gICAgICAgICBbcm9vdEBub3JtIH5dIyBmb3IgaSBpbiAwIDE7IGRvIGVj
aG8gLW4gImV0aCRpOiAiOyBldGh0b29sDQo+IGV0aCRpIHwgZ3JlcCBMaW5rOyBkb25lDQo+ID4g
PiAgICAgICAgIGV0aDA6ICAgTGluayBkZXRlY3RlZDogeWVzDQo+ID4gPiAgICAgICAgIGV0aDE6
ICAgTGluayBkZXRlY3RlZDogeWVzDQo+ID4gPg0KPiA+ID4NCj4gPiA+IFNvLCB3ZSBjYW4gc2Vl
IHRoYXQgaW4gYm90aCBjYXNlcyB0aGUgZGV2aWNlIG9yZGVyaW5nIGlzIHVuY2hhbmdlZA0KPiBm
cm9tDQo+ID4gPiB0aGF0IHdoaWNoIHdhcyBkaXNjb3ZlcmVkIGF0IGJvb3QgYnkgdGhlIGtlcm5l
bCwgYW5kIHRoYXQgZXRoMCB3YXMNCj4gPiA+IHByb2JlZCBmaXJzdC4NCj4gPiA+DQo+ID4gPiBB
bmQgaGVyZSBhZ2FpbiBmb3IgcG9zdGVyaXR5IGlzIHRoZSBhY3RpdmUgcm91dGluZyB0YWJsZSBh
bmQNCj4gcmVzdWx0cyBvZg0KPiA+ID4gImlwIHJvdXRlIGdldCIgb24gZWFjaCBtYWNoaW5lOg0K
PiA+ID4NCj4gPiA+IERldmlhbnQ6DQo+ID4gPiAgICAgICAgIFtyb290QGR2bnQgfl0jIGlwIHJv
dXRlIHNob3cgdGFibGUgbWFpbg0KPiA+ID4gICAgICAgICAxMC4xLjEuMSBkZXYgdHVuMCAgcHJv
dG8ga2VybmVsICBzY29wZSBsaW5rICBzcmMgMTAuMS4xLjcNCj4gPiA+ICAgICAgICAgMTAuMjUw
LjMyLjEgdmlhIDEwLjEuMS4xIGRldiB0dW4wDQo+ID4gPiAgICAgICAgIDEwLjI1MC4xMC4wLzI0
IHZpYSAxMC4xLjEuMSBkZXYgdHVuMA0KPiA+ID4gICAgICAgICAxOTIuMTY4LjcyLjAvMjQgZGV2
IGV0aDAgIHByb3RvIGtlcm5lbCAgc2NvcGUgbGluayAgc3JjDQo+IDE5Mi4xNjguNzIuMTI0DQo+
ID4gPiAgICAgICAgIDE5Mi4xNjguNzIuMC8yNCBkZXYgZXRoMSAgcHJvdG8ga2VybmVsICBzY29w
ZSBsaW5rICBzcmMNCj4gMTkyLjE2OC43Mi4xMDANCj4gPiA+ICAgICAgICAgZGVmYXVsdCB2aWEg
MTkyLjE2OC43Mi4xIGRldiBldGgxDQo+ID4gPiAgICAgICAgIGRlZmF1bHQgdmlhIDE5Mi4xNjgu
NzIuMSBkZXYgZXRoMA0KPiA+ID4gICAgICAgICBbcm9vdEBkdm50IH5dIyBpcCByb3V0ZSBnZXQg
OC44LjguOCB8IHNhbml6ZQ0KPiA+ID4gICAgICAgICA4LjguOC44IHZpYSAxOTIuMTY4LjcyLjEg
ZGV2IGV0aDAgIHNyYyAxOTIuMTY4LjcyLjEyNA0KPiA+ID4gICAgICAgICAgICAgY2FjaGUgIG10
dSAxNTAwIGFkdm1zcyAxNDYwIGhvcGxpbWl0IDY0DQo+ID4gPg0KPiA+ID4gTm9ybToNCj4gPiA+
ICAgICAgICAgW3Jvb3RAbm9ybSB+XSMgaXAgcm91dGUgc2hvdyB0YWJsZSBtYWluDQo+ID4gPiAg
ICAgICAgIDEwLjEuMS4xIGRldiB0dW4wICBwcm90byBrZXJuZWwgIHNjb3BlIGxpbmsgIHNyYyAx
MC4xLjEuNDUNCj4gPiA+ICAgICAgICAgMTAuMjUwLjMyLjEgdmlhIDEwLjEuMS4xIGRldiB0dW4w
DQo+ID4gPiAgICAgICAgIDEwLjI1MC4xMC4wLzI0IHZpYSAxMC4xLjEuMSBkZXYgdHVuMA0KPiA+
ID4gICAgICAgICAxOTIuMTY4LjcyLjAvMjQgZGV2IGV0aDAgIHByb3RvIGtlcm5lbCAgc2NvcGUg
bGluayAgc3JjDQo+IDE5Mi4xNjguNzIuMTIzDQo+ID4gPiAgICAgICAgIDE5Mi4xNjguNzIuMC8y
NCBkZXYgZXRoMSAgcHJvdG8ga2VybmVsICBzY29wZSBsaW5rICBzcmMNCj4gMTkyLjE2OC43Mi45
OQ0KPiA+ID4gICAgICAgICBkZWZhdWx0IHZpYSAxOTIuMTY4LjcyLjEgZGV2IGV0aDENCj4gPiA+
ICAgICAgICAgZGVmYXVsdCB2aWEgMTkyLjE2OC43Mi4xIGRldiBldGgwDQo+ID4gPiAgICAgICAg
IFtyb290QG5vcm0gfl0jIGlwIHJvdXRlIGdldCA4LjguOC44DQo+ID4gPiAgICAgICAgIDguOC44
LjggdmlhIDE5Mi4xNjguNzIuMSBkZXYgZXRoMSAgc3JjIDE5Mi4xNjguNzIuOTkNCj4gPiA+ICAg
ICAgICAgICAgIGNhY2hlICBtdHUgMTUwMCBhZHZtc3MgMTQ2MCBob3BsaW1pdCA2NA0KPiA+ID4N
Cj4gPiA+DQo+ID4gPiBBbnkgdGhvdWdodHMgYXMgdG8gd2hhdCBlbHNlIG1pZ2h0IGJlIGdvaW5n
IG9uPw0KPiA+ID4NCj4gPiA+IE9sZQ0KPiA+ID4NCj4gPiA+ICoiaWRlbnRpY2FsWy4uLl1ody9z
dyBjb25maWciIC0tIGdyYW50ZWQgdGhlcmUgYXJlIGRpZmZlcmVuY2VzIGluDQo+ID4gPiBhcHBs
aWNhdGlvbiBjb25maWd1cmF0aW9uIChsYXllcnMgNS03KSBidXQgbm90aGluZyB0aGF0IHNob3Vs
ZA0KPiBjb21lDQo+ID4gPiBjbG9zZSB0byBhZmZlY3Rpbmcgcm91dGluZy4NCj4gPiA+IC0tDQo+
ID4gPiBPbGUgQ3JhaWcgPG9sY0BtYWNtaWxsYW4tY3JhaWcubmV0Pg0KPiA+ID4NCj4gPiA+IE9u
IFdlZCwgMjAxNC0wNC0xNiBhdCAxNjo1MSAtMDMwMCwgSm9lbCBHZXJiZXIgd3JvdGU6DQo+ID4g
Pj4gQXJlIHlvdSBydW5uaW5nIGRpZmZlcmVudCB2ZXJzaW9ucyBvZiB0aGUgTGludXgga2VybmVs
Pw0KPiA+ID4+DQo+ID4gPj4gSSdtIHF1aXRlIGNlcnRhaW4gdGhhdCB0aGUgb3JkZXIgdGhlIHJv
dXRlcyBhcmUgYWRkZWQgc2hvdWxkIGhhdmUNCj4gbm8gd2VpZ2h0IG9uIHRoaXMgbWF0dGVyLiBU
aGVyZSBpcyBhbHNvIGFub3RoZXIgcG9zc2liaWxpdHkuIFlvdSBtaWdodA0KPiBiZSByZW5hbWlu
ZyB0aGUgaW50ZXJmYWNlcyBkaWZmZXJlbnRseSB0aGF0IHRoZSBvcmRlciB0aGF0IHRoZXkgYXJl
DQo+IGxvYWRlZCBpbnRvIHRoZSBrZXJuZWwgYXMuIFdoaWNoZXZlciBpbnRlcmZhY2Ugd2FzIGxv
YWRlZCBmaXJzdCB3aWxsDQo+IGhhdmUgdGhlIHNtYWxsZXIgaW50ZXJuYWwgbnVtYmVyLCB3aGlj
aCBpcyB0aGUgb25lIHRoYXQgd291bGQgZ2V0DQo+IHNlbGVjdGVkIGZpcnN0Lg0KPiA+ID4+DQo+
ID4gPj4gSm9lbCBHZXJiZXINCj4gPiA+PiBOZXR3b3JrIFNwZWNpYWxpc3QNCj4gPiA+PiBOZXR3
b3JrIE9wZXJhdGlvbnMNCj4gPiA+PiBFYXN0bGluaw0KPiA+ID4+IEU6IEpvZWwuR2VyYmVyQGNv
cnAuZWFzdGxpbmsuY2EgVDogNTE5Ljc4Ni4xMjQxDQo+ID4gPj4NCj4gPiA+PiAtLS0tLU9yaWdp
bmFsIE1lc3NhZ2UtLS0tLQ0KPiA+ID4+IEZyb206IE9sZSBDcmFpZyBbbWFpbHRvOm9sY0BtYWNt
aWxsYW4tY3JhaWcubmV0XQ0KPiA+ID4+IFNlbnQ6IEFwcmlsLTE2LTE0IDExOjA4IEFNDQo+ID4g
Pj4gVG86IEpvZWwgR2VyYmVyDQo+ID4gPj4gQ2M6IGxhcnRjQHZnZXIua2VybmVsLm9yZw0KPiA+
ID4+IFN1YmplY3Q6IFJFOiBpcHJvdXRlMiBkb2VzIG5vdCBzZWxlY3QgMXN0IGRlZmF1bHQgcm91
dGUgaW4gdGFibGU/DQo+ID4gPj4NCj4gPiA+PiBIZWxsbyBKb2VsLA0KPiA+ID4+IFRoZXJlIG11
c3QgYmUgc29tZXRoaW5nIGVsc2UgaW4gcGxheTsgd2UgbWFuYWdlIGh1bmRyZWRzIG9mIG90aGVy
DQo+IHNpbWlsYXIgYXBwbGlhbmNlcyBhbmQgdGhpcyBpcyB0aGUgb25seSBvbmUgdGhhdCdzIGV4
aGliaXRpbmcgdGhpcw0KPiBiZWhhdmlvci4gKCJzaW1pbGFyIiA9PSAic2FtZSBoYXJkd2FyZSBz
cGVjLCBzYW1lIHNvZnR3YXJlIHNwZWMsIG9ubHkNCj4gdGhlIElQcyBhcmUgZGlmZmVyZW50IiAt
LSBhbmQgeWVzLCBtb3N0IG9mIHRoZW0gaGF2ZSBldGgwIGFuZCBldGgxDQo+IHNoYXJpbmcgYSBz
dWJuZXQgYW5kIGd3LCBhbmQgZXRoMSBpcyBhbHdheXMgdGhlIGRlZmF1bHQgcm91dGUgZm9yDQo+
IHBhY2tldHMgbm90IGJ1aWx0IHdpdGggYSBzcGVjaWZpYyBzb3VyY2UgSVAuKQ0KPiA+ID4+DQo+
ID4gPj4gVGhhbmtzLA0KPiA+ID4+ICAgICBPbGUNCj4gPiA+Pg0KPiA+ID4+IEpvZWwgR2VyYmVy
IDxKb2VsLkdlcmJlckBjb3JwLmVhc3RsaW5rLmNhPiB3cm90ZToNCj4gPiA+Pg0KPiA+ID4+ID5I
ZWxsbyBPbGU7DQo+ID4gPj4gPg0KPiA+ID4+ID5JZiB5b3UgaGF2ZSBtdWx0aXBsZSByb3V0ZXMg
c2V0IHdpdGggdGhlIHNhbWUgbWV0cmljIHRvIHRoZSBzYW1lDQo+IGRlc3RpbmF0aW9uLCBieSBk
ZWZhdWx0LCB0aGUgTGludXgga2VybmVsIHdpbGwgY2hvb3NlIHRoZSBsb3dlc3QNCj4gbnVtYmVy
ZWQgaW50ZXJmYWNlIHRvIHVzZS4gVGhpcyB3b3VsZCBiZSB3aHkgZXRoMCBpcyBiZWluZyBoaXQg
ZXZlcnkNCj4gdGltZS4gSXQgaGFzIG5vdGhpbmcgdG8gZG8gd2l0aCB5b3VyIGlwIHJ1bGUgZGVm
aW5pdGlvbnMuIElmIHlvdQ0KPiB3YW50ZWQgdG8gcHJlZmVyIGV0aDEsIGFkZCBhIGxhcmdlciBt
ZXRyaWMgZmxhZyB0byB0aGUgZXRoMCByb3V0ZSwNCj4gd2hpY2ggd2lsbCBjYXVzZSBldGgxIHRv
IGJlIHVzZWQgaW5zdGVhZC4gVGhlbiwgb25seSBpbiB0aGUgZXZlbnQgdGhhdA0KPiBldGgxIGlz
IGxpbmstZG93biwgd2lsbCBldGgwIGJlIHVzZWQuDQo+ID4gPj4gPg0KPiA+ID4+ID5Zb3UgY291
bGQgYWxzbyBzZXR1cCBFQ01QIChFcXVhbCBDb3N0IE11bHRpIFBhdGgpIHdoaWNoIHdvdWxkDQo+
IGFsbG93IHlvdSB0byBsb2FkLWJhbGFuY2UgdHJhZmZpYyBhY3Jvc3MgYm90aCBpbnRlcmZhY2Vz
LiBUbyBkbyB0aGlzLA0KPiBhZGQgdGhlIGVxdWFsaXplIG9wdGlvbiB0byB5b3VyIDIgZGVmYXVs
dCByb3V0ZXMgd2hlbiBhZGRpbmcgdGhlbS4gWW91DQo+IG1pZ2h0IG5lZWQgdG8gdmVyaWZ5IHRo
YXQgeW91IGhhdmUgbXVsdGlwYXRoIHN1cHBvcnQgYmFrZWQgaW50byB5b3VyDQo+IGtlcm5lbCBm
aXJzdC4NCj4gPiA+PiA+DQo+ID4gPj4gPkpvZWwgR2VyYmVyDQo+ID4gPj4gPk5ldHdvcmsgU3Bl
Y2lhbGlzdA0KPiA+ID4+ID5OZXR3b3JrIE9wZXJhdGlvbnMNCj4gPiA+PiA+RWFzdGxpbmsNCj4g
PiA+PiA+RTogSm9lbC5HZXJiZXJAY29ycC5lYXN0bGluay5jYSBUOiA1MTkuNzg2LjEyNDENCj4g
PiA+PiA+DQo+ID4gPj4gPi0tLS0tT3JpZ2luYWwgTWVzc2FnZS0tLS0tDQo+ID4gPj4gPkZyb206
IGxhcnRjLW93bmVyQHZnZXIua2VybmVsLm9yZw0KPiBbbWFpbHRvOmxhcnRjLW93bmVyQHZnZXIu
a2VybmVsLm9yZ10gT24gQmVoYWxmIE9mIE9sZSBDcmFpZw0KPiA+ID4+ID5TZW50OiBBcHJpbC0x
Ni0xNCA3OjM0IEFNDQo+ID4gPj4gPlRvOiBsYXJ0Y0B2Z2VyLmtlcm5lbC5vcmcNCj4gPiA+PiA+
U3ViamVjdDogaXByb3V0ZTIgZG9lcyBub3Qgc2VsZWN0IDFzdCBkZWZhdWx0IHJvdXRlIGluIHRh
YmxlPw0KPiA+ID4+ID4NCj4gPiA+PiA+SSBhbSBoYXZpbmcgdGhlIGRhbW5lZGVzdCB0aW1lIHdp
dGggYSBkdWFsLUlQIENlbnRPUzUtYmFzZWQNCj4gYXBwbGlhbmNlIHdoaWNoIHNlZW1zIHRvIGRl
ZnkgaXRzIGlwcm91dGUyIGNvbmZpZ3VyYXRpb24sIGFuZCBJJ20gaGVyZQ0KPiBob3Bpbmcgc29t
ZW9uZSBzbWFydGVyIHRoYW4gbWUgKGFkbWl0dGVkbHkgbm90IGEgaGlnaCBiYXIpIG1pZ2h0IGJl
IHNvDQo+IGtpbmQgYXMgdG8gdGVsbCBtZSB3aGF0IEknbSBtaXNzaW5nOg0KPiA+ID4+ID4gICAg
ICAgICMgaXAgcm91dGUgc2hvdyB0YWJsZSBtYWluDQo+ID4gPj4gPiAgICAgICAgMTAuMS4xLjEg
ZGV2IHR1bjAgIHByb3RvIGtlcm5lbCAgc2NvcGUgbGluayAgc3JjDQo+IDEwLjEuMS43DQo+ID4g
Pj4gPiAgICAgICAgMTAuMjUwLjMyLjEgdmlhIDEwLjEuMS4xIGRldiB0dW4wDQo+ID4gPj4gPiAg
ICAgICAgMTAuMjUwLjEwLjAvMjQgdmlhIDEwLjEuMS4xIGRldiB0dW4wDQo+ID4gPj4gPiAgICAg
ICAgMTkyLjE2OC4yNS4wLzI0IGRldiBldGgwICBwcm90byBrZXJuZWwgIHNjb3BlIGxpbmsgIHNy
Yw0KPiAxOTIuMTY4LjI1LjEyNA0KPiA+ID4+ID4gICAgICAgIDE5Mi4xNjguMjUuMC8yNCBkZXYg
ZXRoMSAgcHJvdG8ga2VybmVsICBzY29wZSBsaW5rICBzcmMNCj4gMTkyLjE2OC4yNS4xMDANCj4g
PiA+PiA+ICAgICAgICBkZWZhdWx0IHZpYSAxOTIuMTY4LjI1LjEgZGV2IGV0aDENCj4gPiA+PiA+
ICAgICAgICBkZWZhdWx0IHZpYSAxOTIuMTY4LjI1LjEgZGV2IGV0aDANCj4gPiA+PiA+ICAgICAg
ICAjIGlwIHJvdXRlIGdldCA4LjguOC44DQo+ID4gPj4gPiAgICAgICAgOC44LjguOCB2aWEgMTky
LjE2OC4yNS4xIGRldiBldGgwICBzcmMgMTkyLjE2OC4yNS4xMjQNCj4gPiA+PiA+ICAgICAgICAg
ICAgY2FjaGUgIG10dSAxNTAwIGFkdm1zcyAxNDYwIGhvcGxpbWl0IDY0DQo+ID4gPj4gPg0KPiA+
ID4+ID5JIGhhdmUgYmVlbiBwbGF5aW5nIHdpdGggdGhpcyBib3ggZm9yIHNldmVyYWwgZGF5cywg
YW5kIG5vDQo+IG1hdHRlciB3aGF0IEkgZG8gKGluY2x1ZGluZyByZWJvb3RzKSBpdCB3YW50cyB0
byByb3V0ZSBhbG1vc3QNCj4gZXZlcnl0aGluZyBvdXQgZXRoMCBpbnN0ZWFkIG9mIGV0aDEsIGRl
c3BpdGUgdGhlIG9yZGVyaW5nIG9mIGRlZmF1bHQNCj4gcm91dGVzIHNob3duIGFib3ZlIHdoaWNo
IHNob3VsZCBzZWUgZXRoMSB0YWtpbmcgcHJlY2VkZW5jZS4gTm8NCj4gaXB0YWJsZXMgUFJFUk9V
VElORy9uYXQvbWFuZ2xlL3JhdyBzdHVmZiwgdGhpcyBpcyBhbGwgc3RyYWlnaHQNCj4gaXByb3V0
ZTIuDQo+ID4gPj4gPg0KPiA+ID4+ID5JIGRldGVybWluZWQgdGhhdCB0aGUgJ21haW4nIHRhYmxl
IHdhcyB0aGUgb25lIGF0IGlzc3VlIGJ5DQo+IGluc2VydGluZyBhbmQgcmVtb3ZpbmcgYW4gb3Zl
cnJpZGluZyBydWxlIGF0IHZhcmlvdXMgcHJpb3JpdGllcyB0byBzZWUNCj4gd2hlbiAnaXAgZ2V0
Jw0KPiA+ID4+ID53b3VsZCBjaGFuZ2UgYmVoYXZpb3I6DQo+ID4gPj4gPiAgICAgICAgIyBpcCBy
dWxlIHNob3cgfCB0YWlsDQo+ID4gPj4gPiAgICAgICAgMzI3NTg6ICAgICAgIGZyb20gYWxsIHRv
IDE5Mi4xNjguNzIuMC8yNCBsb29rdXANCj4gZGVmcm91dGVzDQo+ID4gPj4gPiAgICAgICAgMzI3
NTk6ICAgICAgIGZyb20gMTkyLjE2OC43Mi4wLzI0IGxvb2t1cCBkZWZyb3V0ZXMNCj4gPiA+PiA+
ICAgICAgICAzMjc2MDogICAgICAgZnJvbSAxOTIuMTY4LjcyLjAvMjQgbG9va3VwIG1ndHJvdXRl
cw0KPiA+ID4+ID4gICAgICAgIDMyNzY2OiAgICAgICBmcm9tIGFsbCBsb29rdXAgbWFpbg0KPiA+
ID4+ID4gICAgICAgIDMyNzY3OiAgICAgICBmcm9tIGFsbCBsb29rdXAgZGVmYXVsdA0KPiA+ID4+
ID4gICAgICAgICMgaXAgcm91dGUgYWRkIHRhYmxlIGN1c3RvbSB0byA4LjguOC4wLzI0IHZpYQ0K
PiAxOTIuMTY4LjcyLjEgZGV2IGV0aDEgc3JjIDE5Mi4xNjguNzIuMTAwDQo+ID4gPj4gPiAgICAg
ICAgIyBmb3IgaSBpbiAkKHNlcSAzMjc2NyAtMSAzMjc2NCk7IGRvIGlwIHJ1bGUgYWRkIHByaW8g
JGkNCj4gdG8gOC44LjguMC8yNCBsb29rdXAgY3VzdG9tOyBpcCByb3V0ZSBmbHVzaCBjYWNoZTsg
c2xlZXAgMjsgZWNobyAtZW4NCj4gIiRpOlx0IjsgaXAgcm91dGUgZ2V0IDguOC44Ljh8IGhlYWQg
LTE7IGlwIHJ1bGUgZGVsIHByaW8gJGkgdG8NCj4gOC44LjguMC8yNCBsb29rdXAgY3VzdG9tOyBp
cCByb3V0ZSBmbHVzaCBjYWNoZTsgc2xlZXAgMjsgZG9uZQ0KPiA+ID4+ID4gICAgICAgIDMyNzY3
OiAgICAgICA4LjguOC44IHZpYSAxOTIuMTY4LjcyLjEgZGV2IGV0aDAgIHNyYw0KPiAxOTIuMTY4
LjcyLjEyNA0KPiA+ID4+ID4gICAgICAgIDMyNzY2OiAgICAgICA4LjguOC44IHZpYSAxOTIuMTY4
LjcyLjEgZGV2IGV0aDAgIHNyYw0KPiAxOTIuMTY4LjcyLjEyNA0KPiA+ID4+ID4gICAgICAgIDMy
NzY1OiAgICAgICA4LjguOC44IHZpYSAxOTIuMTY4LjcyLjEgZGV2IGV0aDEgIHNyYw0KPiAxOTIu
MTY4LjcyLjEwMA0KPiA+ID4+ID4gICAgICAgIDMyNzY0OiAgICAgICA4LjguOC44IHZpYSAxOTIu
MTY4LjcyLjEgZGV2IGV0aDEgIHNyYw0KPiAxOTIuMTY4LjcyLjEwMA0KPiA+ID4+ID4NCj4gPiA+
PiA+Qm90aCBpbnRlcmZhY2VzIGFyZSB1cCwgYW5kIGFyZSAqYWJsZSogdG8gcmVhY2ggOC44Ljgu
OCB2aWEgdGhlDQo+IHVwc3RyZWFtDQo+ID4gPj4gPmd3Og0KPiA+ID4+ID4gICAgICAgICMgcGlu
ZyAtYyAxIC1JIGV0aDAgOC44LjguOA0KPiA+ID4+ID4gICAgICAgIFBJTkcgOC44LjguOCAoOC44
LjguOCkgZnJvbSAxOTIuMTY4LjcyLjEyNCBldGgwOiA1Nig4NCkNCj4gYnl0ZXMgb2YgZGF0YS4N
Cj4gPiA+PiA+ICAgICAgICA2NCBieXRlcyBmcm9tIDguOC44Ljg6IGljbXBfc2VxPTEgdHRsPTQ3
IHRpbWU9MTQuOSBtcw0KPiA+ID4+ID4NCj4gPiA+PiA+ICAgICAgICAtLS0gOC44LjguOCBwaW5n
IHN0YXRpc3RpY3MgLS0tDQo+ID4gPj4gPiAgICAgICAgMSBwYWNrZXRzIHRyYW5zbWl0dGVkLCAx
IHJlY2VpdmVkLCAwJSBwYWNrZXQgbG9zcywgdGltZQ0KPiAwbXMNCj4gPiA+PiA+ICAgICAgICBy
dHQgbWluL2F2Zy9tYXgvbWRldiA9IDE0Ljk5MC8xNC45OTAvMTQuOTkwLzAuMDAwIG1zDQo+ID4g
Pj4gPiAgICAgICAgIyBwaW5nIC1jIDEgLUkgZXRoMSA4LjguOC44DQo+ID4gPj4gPiAgICAgICAg
UElORyA4LjguOC44ICg4LjguOC44KSBmcm9tIDE5Mi4xNjguNzIuMTAwIGV0aDE6IDU2KDg0KQ0K
PiBieXRlcyBvZiBkYXRhLg0KPiA+ID4+ID4gICAgICAgIDY0IGJ5dGVzIGZyb20gOC44LjguODog
aWNtcF9zZXE9MSB0dGw9NDcgdGltZT0xNC45IG1zDQo+ID4gPj4gPg0KPiA+ID4+ID4gICAgICAg
IC0tLSA4LjguOC44IHBpbmcgc3RhdGlzdGljcyAtLS0NCj4gPiA+PiA+ICAgICAgICAxIHBhY2tl
dHMgdHJhbnNtaXR0ZWQsIDEgcmVjZWl2ZWQsIDAlIHBhY2tldCBsb3NzLCB0aW1lDQo+IDBtcw0K
PiA+ID4+ID4gICAgICAgIHJ0dCBtaW4vYXZnL21heC9tZGV2ID0gMTQuOTk5LzE0Ljk5OS8xNC45
OTkvMC4wMDAgbXMNCj4gPiA+PiA+DQo+ID4gPj4gPkNhbiBhbnlvbmUgaGVscCBteSBmaWd1cmUg
b3V0IHdoeSB0aGlzIGJveCAoYWxvbmUgb3V0IG9mIG1hbnksDQo+IG1hbnkgYXBwbGlhbmNlcyB3
aXRoIHNpbWlsYXIgY29uZmlndXJhdGlvbnMgYXQgdmFyaW91cyBjdXN0b21lciBzaXRlcykNCj4g
aXMgZGV0ZXJtaW5lZCB0byByZWFjaCBvdXQgdGhyb3VnaCBldGgwPw0KPiA+ID4+ID4NCj4gPiA+
PiA+VGhlIGZ1bGwgUlBEQiBydWxlc2V0Og0KPiA+ID4+ID4gICAgICAgICMgaXAgcnVsZSBzaG93
DQo+ID4gPj4gPiAgICAgICAgMDogICBmcm9tIGFsbCBsb29rdXAgMjU1DQo+ID4gPj4gPiAgICAg
ICAgMTA6ICBmcm9tIGFsbCBsb29rdXAgYm9vdHN0cmFwDQo+ID4gPj4gPiAgICAgICAgMzI3MzY6
ICAgICAgIGZyb20gYWxsIHRvIDEyOC4xMTkuNDAuMSBsb29rdXAgbWd0cm91dGVzDQo+ID4gPj4g
PiAgICAgICAgMzI3Mzc6ICAgICAgIGZyb20gYWxsIHRvIDE5Mi4xNjguMTI2LjIyOCBsb29rdXAN
Cj4gbWd0cm91dGVzDQo+ID4gPj4gPiAgICAgICAgMzI3Mzg6ICAgICAgIGZyb20gYWxsIHRvIDE5
Mi4xNjguNzYuMjMyIGxvb2t1cCBtZ3Ryb3V0ZXMNCj4gPiA+PiA+ICAgICAgICAzMjczOTogICAg
ICAgZnJvbSBhbGwgdG8gMTkyLjE2OC45MC4xMTIgbG9va3VwIG1ndHJvdXRlcw0KPiA+ID4+ID4g
ICAgICAgIDMyNzQwOiAgICAgICBmcm9tIGFsbCB0byAxOTIuMTY4LjYxLjExMiBsb29rdXAgbWd0
cm91dGVzDQo+ID4gPj4gPiAgICAgICAgMzI3NDE6ICAgICAgIGZyb20gYWxsIHRvIDE5Mi4xNjgu
NzYuMjMyIGxvb2t1cCBtZ3Ryb3V0ZXMNCj4gPiA+PiA+ICAgICAgICAzMjc0MjogICAgICAgZnJv
bSBhbGwgdG8gMTkyLjE2OC42MS4xMTIgbG9va3VwIG1ndHJvdXRlcw0KPiA+ID4+ID4gICAgICAg
IDMyNzQzOiAgICAgICBmcm9tIGFsbCB0byAxOTIuMTY4LjM0LjM1IGxvb2t1cCBtZ3Ryb3V0ZXMN
Cj4gPiA+PiA+ICAgICAgICAzMjc0NDogICAgICAgZnJvbSBhbGwgdG8gMTkyLjE2OC42MS4xMTIg
bG9va3VwIGRlZnJvdXRlcw0KPiA+ID4+ID4gICAgICAgIDMyNzQ1OiAgICAgICBmcm9tIGFsbCB0
byAxOTIuMTY4LjEzNC40NyBsb29rdXAgbWd0cm91dGVzDQo+ID4gPj4gPiAgICAgICAgMzI3NDY6
ICAgICAgIGZyb20gYWxsIHRvIDE5Mi4xNjguMTI3LjY4IGxvb2t1cCBtZ3Ryb3V0ZXMNCj4gPiA+
PiA+ICAgICAgICAzMjc0NzogICAgICAgZnJvbSBhbGwgdG8gMTkyLjE2OC42Ni42IGxvb2t1cCBt
Z3Ryb3V0ZXMNCj4gPiA+PiA+ICAgICAgICAzMjc0ODogICAgICAgZnJvbSBhbGwgdG8gMTkyLjE2
OC4xMjYuMjI4IGxvb2t1cA0KPiBtZ3Ryb3V0ZXMNCj4gPiA+PiA+ICAgICAgICAzMjc0OTogICAg
ICAgZnJvbSBhbGwgdG8gMTkyLjE2OC4xMjcuNjggbG9va3VwIG1ndHJvdXRlcw0KPiA+ID4+ID4g
ICAgICAgIDMyNzUwOiAgICAgICBmcm9tIGFsbCB0byAxOTIuMTY4LjEzNC40MSBsb29rdXAgbWd0
cm91dGVzDQo+ID4gPj4gPiAgICAgICAgMzI3NTE6ICAgICAgIGZyb20gYWxsIHRvIDE5Mi4xNjgu
MTM0LjQxIGxvb2t1cCBtZ3Ryb3V0ZXMNCj4gPiA+PiA+ICAgICAgICAzMjc1MjogICAgICAgZnJv
bSBhbGwgdG8gMTkyLjE2OC43Ni4yMzIgbG9va3VwIG1ndHJvdXRlcw0KPiA+ID4+ID4gICAgICAg
IDMyNzUzOiAgICAgICBmcm9tIGFsbCB0byAxMDcuMjMuMTUuMTc1IGxvb2t1cCBtZ3Ryb3V0ZXMN
Cj4gPiA+PiA+ICAgICAgICAzMjc1NDogICAgICAgZnJvbSBhbGwgdG8gMjE2Ljg3LjY5Ljk0IGxv
b2t1cCBtZ3Ryb3V0ZXMNCj4gPiA+PiA+ICAgICAgICAzMjc1NTogICAgICAgZnJvbSAxOTIuMTY4
LjcyLjEyNCBsb29rdXAgbWd0cm91dGVzDQo+ID4gPj4gPiAgICAgICAgMzI3NTY6ICAgICAgIGZy
b20gMTkyLjE2OC43Mi4xMDAgbG9va3VwIGRlZnJvdXRlcw0KPiA+ID4+ID4gICAgICAgIDMyNzU3
OiAgICAgICBmcm9tIDE5Mi4xNjguNzIuMC8yNCB0byAxOTIuMTY4LjcyLjAvMjQNCj4gbG9va3Vw
IG1ndHJvdXRlcw0KPiA+ID4+ID4gICAgICAgIDMyNzU4OiAgICAgICBmcm9tIGFsbCB0byAxOTIu
MTY4LjcyLjAvMjQgbG9va3VwDQo+IGRlZnJvdXRlcw0KPiA+ID4+ID4gICAgICAgIDMyNzU5OiAg
ICAgICBmcm9tIDE5Mi4xNjguNzIuMC8yNCBsb29rdXAgZGVmcm91dGVzDQo+ID4gPj4gPiAgICAg
ICAgMzI3NjA6ICAgICAgIGZyb20gMTkyLjE2OC43Mi4wLzI0IGxvb2t1cCBtZ3Ryb3V0ZXMNCj4g
PiA+PiA+ICAgICAgICAzMjc2NjogICAgICAgZnJvbSBhbGwgbG9va3VwIG1haW4NCj4gPiA+PiA+
ICAgICAgICAzMjc2NzogICAgICAgZnJvbSBhbGwgbG9va3VwIGRlZmF1bHQNCj4gPiA+PiA+DQo+
ID4gPj4gPg0KPiA+ID4+ID4NCj4gPiA+PiA+ICAgICBUaGFuayB5b3UgZm9yIGFueSBjbHVlIHlv
dSBjYW4gc3BhcmUsDQo+ID4gPj4gPiAgICAgICAgICAgICBPbGUNCj4gPiA+PiA+LS0NCj4gPiA+
PiA+T2xlIENyYWlnIDxvbGNAbWFjbWlsbGFuLWNyYWlnLm5ldD4NCj4gPiA+PiA+DQo+ID4gPj4g
Pi0tDQo+ID4gPj4gPlRvIHVuc3Vic2NyaWJlIGZyb20gdGhpcyBsaXN0OiBzZW5kIHRoZSBsaW5l
ICJ1bnN1YnNjcmliZSBsYXJ0YyINCj4gaW4gdGhlIGJvZHkgb2YgYSBtZXNzYWdlIHRvIG1ham9y
ZG9tb0B2Z2VyLmtlcm5lbC5vcmcgTW9yZSBtYWpvcmRvbW8NCj4gaW5mbyBhdCAgaHR0cDovL3Zn
ZXIua2VybmVsLm9yZy9tYWpvcmRvbW8taW5mby5odG1sDQo+ID4gPj4gey5uKysl3bYgd3subitq
XCl3KmpnIN2iag0KPiA+ID4gRw0KPiA+ID4gajordndqbSAgd2Zo2aUNCj4gPiA+DQo+ID4gPg0K
PiA+DQo+ID4NCj4gPg0KPg0KPg0KPg0KPg0KPg0KPg0KPg0KPiAtLQ0KPiBjb250YXRvczoNCj4g
Q2VsdWxhcjogKCA5OSApIDkxNDMtNTk1NCAtIFZpdm8NCj4gc2t5cGU6IGx1Y2FzZDNjYXN0cm8N
Cj4gbXNuOiBsdWNhc2Nhc3Ryb2Jvcmdlc0Bob3RtYWlsLmNvbQ0KPg0KPg0KDQoNChMgIOy5uxwg
JiB+ICYgGCAgKy0gIN22FyAgdyAgy5sgICBtIFogICIgIF5uIHIgICB6IBogIGggICAgJiAgHiBH
ICAgaCADKCDpmo4g3aJqIiAgGiAbbSAgICAgeiDeliAgIGYgICBoICAgfiBtDQo
^ permalink raw reply [flat|nested] 12+ messages in thread
end of thread, other threads:[~2014-05-20 13:40 UTC | newest]
Thread overview: 12+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2014-04-16 11:34 iproute2 does not select 1st default route in table? Ole Craig
2014-04-16 12:01 ` Joel Gerber
2014-04-16 15:08 ` Ole Craig
2014-04-16 19:51 ` Joel Gerber
2014-05-09 20:13 ` Ole Craig
2014-05-12 11:52 ` Joel Gerber
2014-05-12 20:05 ` Anton Danilov
2014-05-13 23:35 ` Ole Craig
2014-05-15 19:25 ` Joel Gerber
2014-05-16 20:27 ` Ole Craig
2014-05-20 13:38 ` Joel Gerber
2014-05-20 13:40 ` Joel Gerber
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.