Hi All,
               After I run below two cmds manually, ping traffic recovered , 
but why tc mirred not working after sometime

tc qdisc add dev eth1 handle ffff: ingress
tc filter add dev eth1 parent ffff: u32  match u32 0 0 action mirred egress 
redirect dev dtap0

Best Regards,
Kevin
From: vpp-dev@lists.fd.io <vpp-dev@lists.fd.io> On Behalf Of Kevin Yan via 
lists.fd.io
Sent: Friday, December 2, 2022 4:39 PM
To: Peter Morrow <pe...@graphiant.com>; Stephen Hemminger 
<step...@networkplumber.org>
Cc: vpp-dev@lists.fd.io; Long Li <lon...@microsoft.com>
Subject: COMMERCIAL BULK: Re: [E] COMMERCIAL BULK: Re: [vpp-dev] Issues with 
failsafe dpdk pmd in Azure


[EXTERNAL EMAIL] DO NOT CLICK links or attachments unless you recognize the 
sender and know the content is safe.
Hi Peter, Stephen and Long,
               I am facing some issues when running VPP on Azure VM, can you 
please help and give some suggestion if possible.
               I'm running CentOS 7.9 with kernel version 3.10.0 on Azure VM, 
VPP version is 20.09 and DPDK version is 20.11, below is the snapshot of vpp 
startup.conf related to netvsc device

dpdk {
    socket-mem 0
    no-multi-seg
    vdev net_vdev_netvsc0,iface=eth1
    vdev net_vdev_netvsc1,iface=eth2
    netvsc_dev eth1 {
        vpp_interface_name fpeth1
        num-rx-queues 1
        num-tx-queues 1
        num-rx-desc 1024
        num-tx-desc 1024
    }
    netvsc_dev eth2 {
        vpp_interface_name fpeth2
        num-rx-queues 1
        num-tx-queues 1
        num-rx-desc 1024
        num-tx-desc 1024
    }
}
               Forget the netvsc_dev section, this is added by me in order to 
change the failsafe interface name ,otherwise it will always use the default 
name: FailsafeEthernet1, FailsafeEthernet2, etc.
               Btw, for my kernel version(3.10.0) , it can only run failsafe 
PMD in VPP/DDPK, right?

               Basically, we are using two netvsc interfaces and vpp can come 
up without any issue, show hard/show log output looks good and is listed as 
below:
vpp# sh hard
              Name                Idx   Link  Hardware
fpeth1                             1     up   fpeth1
  Link speed: 50 Gbps
  Ethernet address 00:0d:3a:57:cc:aa
  FailsafeEthernet
    carrier up full duplex mtu 1504
    flags: admin-up pmd rx-ip4-cksum
    Devargs: fd(30),dev(net_tap_vsc0,remote=eth1)
    rx: queues 1 (max 16), desc 1024 (min 0 max 65535 align 1)
    tx: queues 1 (max 16), desc 1024 (min 0 max 65535 align 1)
    max rx packet len: 1522
    promiscuous: unicast off all-multicast on
    vlan offload: strip off filter off qinq off
    rx offload avail:  ipv4-cksum udp-cksum tcp-cksum scatter
    rx offload active: ipv4-cksum
    tx offload avail:  ipv4-cksum udp-cksum tcp-cksum tcp-tso multi-segs
    tx offload active: none
    rss avail:         ipv4-frag ipv4-tcp ipv4-udp ipv4-other ipv4 ipv6-tcp-ex
                       ipv6-udp-ex ipv6-frag ipv6-tcp ipv6-udp ipv6-other
                       ipv6-ex ipv6
    rss active:        none
    tx burst function: failsafe_tx_burst_fast
    rx burst function: failsafe_rx_burst_fast

    tx frames ok                                        1507
    tx bytes ok                                        95370
    rx frames ok                                         322
    rx bytes ok                                        33127
    extended stats:
      rx_good_packets                                    322
      tx_good_packets                                   1507
      rx_good_bytes                                    33127
      tx_good_bytes                                    95370
      rx_q0_packets                                      322
      rx_q0_bytes                                      33127
      tx_q0_packets                                     1507
      tx_q0_bytes                                      95370
      tx_sub0_good_packets                              1507
      tx_sub0_good_bytes                               95370
      tx_sub0_q0_packets                                1507
      tx_sub0_q0_bytes                                 95370
      tx_sub0_unicast_packets                            322
      tx_sub0_unicast_bytes                            30910
      tx_sub0_multicast_packets                           29
      tx_sub0_multicast_bytes                           3066
      tx_sub0_broadcast_packets                         1209
      tx_sub0_broadcast_bytes                          80718
      rx_sub1_good_packets                               322
      rx_sub1_good_bytes                               33127
      rx_sub1_q0_packets                                 322
      rx_sub1_q0_bytes                                 33127
fpeth2                             2     up   fpeth2
  Link speed: 50 Gbps
  Ethernet address 00:0d:3a:57:cf:f0
  FailsafeEthernet
    carrier up full duplex mtu 1504
    flags: admin-up pmd rx-ip4-cksum
    Devargs: fd(45),dev(net_tap_vsc1,remote=eth2)
    rx: queues 1 (max 16), desc 1024 (min 0 max 65535 align 1)
    tx: queues 1 (max 16), desc 1024 (min 0 max 65535 align 1)
    max rx packet len: 1522
    promiscuous: unicast off all-multicast on
    vlan offload: strip off filter off qinq off
    rx offload avail:  ipv4-cksum udp-cksum tcp-cksum scatter
    rx offload active: ipv4-cksum
    tx offload avail:  ipv4-cksum udp-cksum tcp-cksum tcp-tso multi-segs
    tx offload active: none
    rss avail:         ipv4-frag ipv4-tcp ipv4-udp ipv4-other ipv4 ipv6-tcp-ex
                       ipv6-udp-ex ipv6-frag ipv6-tcp ipv6-udp ipv6-other
                       ipv6-ex ipv6
    rss active:        none
    tx burst function: failsafe_tx_burst_fast
    rx burst function: failsafe_rx_burst_fast

    tx frames ok                                         829
    tx bytes ok                                        49814
    rx frames ok                                          13
    rx bytes ok                                         2860
    extended stats:
      rx_good_packets                                     13
      tx_good_packets                                    829
      rx_good_bytes                                     2860
      tx_good_bytes                                    49814
      rx_q0_packets                                       13
      rx_q0_bytes                                       2860
      tx_q0_packets                                      829
      tx_q0_bytes                                      49814
      tx_sub0_good_packets                               829
      tx_sub0_good_bytes                               49814
      tx_sub0_q0_packets                                 829
      tx_sub0_q0_bytes                                 49814
      tx_sub0_multicast_packets                           18
      tx_sub0_multicast_bytes                           1776
      tx_sub0_broadcast_packets                          853
      tx_sub0_broadcast_bytes                          59358
      rx_sub1_good_packets                                13
      rx_sub1_good_bytes                                2860
      rx_sub1_q0_packets                                  13
      rx_sub1_q0_bytes                                  2860
local0                             0    down  local0
  Link speed: unknown
  local

2022/12/02 08:01:50:364 warn       dpdk           EAL init args: -c 3 -n 4 
--in-memory --vdev net_vdev_netvsc0,iface=eth1 --vdev 
net_vdev_netvsc1,iface=eth2 --file-prefix vpp --master
-lcore 0
2022/12/02 08:01:50:778 warn       dpdk           net_failsafe devargs: 
fd(30),dev(net_tap_vsc0,remote=eth1)
2022/12/02 08:01:50:778 warn       dpdk           net_failsafe iface: eth1, vpp 
name: fpeth1
2022/12/02 08:01:50:784 warn       dpdk           net_failsafe devargs: 
fd(45),dev(net_tap_vsc1,remote=eth2)
2022/12/02 08:01:50:784 warn       dpdk           net_failsafe iface: eth2, vpp 
name: fpeth2
2022/12/02 08:01:50:794 notice     dpdk           EAL: Detected 8 lcore(s)
2022/12/02 08:01:50:794 notice     dpdk           EAL: Detected 1 NUMA nodes
2022/12/02 08:01:50:794 notice     dpdk           EAL: Selected IOVA mode 'PA'
2022/12/02 08:01:50:794 notice     dpdk           EAL: No available hugepages 
reported in hugepages-1048576kB
2022/12/02 08:01:50:794 notice     dpdk           EAL: No free hugepages 
reported in hugepages-1048576kB
2022/12/02 08:01:50:794 notice     dpdk           EAL: No available hugepages 
reported in hugepages-1048576kB
2022/12/02 08:01:50:794 notice     dpdk           EAL: Probing VFIO support...
2022/12/02 08:01:50:794 notice     dpdk           EAL: WARNING! Base virtual 
address hint (0xa80001000 != 0x7fc440000000) not respected!
2022/12/02 08:01:50:794 notice     dpdk           EAL:    This may cause issues 
with mapping memory into secondary processes
2022/12/02 08:01:50:794 notice     dpdk           EAL: WARNING! Base virtual 
address hint (0xec0c61000 != 0x7fc03fe00000) not respected!
2022/12/02 08:01:50:794 notice     dpdk           EAL:    This may cause issues 
with mapping memory into secondary processes
2022/12/02 08:01:50:794 notice     dpdk           EAL: WARNING! Base virtual 
address hint (0xec18c2000 != 0x7fbc3fc00000) not respected!
2022/12/02 08:01:50:794 notice     dpdk           EAL:    This may cause issues 
with mapping memory into secondary processes
2022/12/02 08:01:50:794 notice     dpdk           EAL: WARNING! Base virtual 
address hint (0xec2523000 != 0x7fb83fa00000) not respected!
2022/12/02 08:01:50:794 notice     dpdk           EAL:    This may cause issues 
with mapping memory into secondary processes
2022/12/02 08:01:50:794 notice     dpdk           EAL: Using memfd is not 
supported, falling back to anonymous hugepages
2022/12/02 08:01:50:794 notice     dpdk           EAL: Probe PCI driver: 
mlx5_pci (15b3:1016) device: 96ac:00:02.0 (socket 0)
2022/12/02 08:01:50:794 notice     dpdk           common_mlx5: RTE_MEM is 
selected.
2022/12/02 08:01:50:794 notice     dpdk           mlx5_pci: No available 
register for Sampler.
2022/12/02 08:01:50:794 notice     dpdk           EAL: Probe PCI driver: 
mlx5_pci (15b3:1016) device: a18f:00:02.0 (socket 0)
2022/12/02 08:01:50:794 notice     dpdk           mlx5_pci: No available 
register for Sampler.
2022/12/02 08:01:50:794 notice     dpdk           EAL:   VFIO support not 
initialized
2022/12/02 08:01:50:794 notice     dpdk           EAL: Couldn't map new region 
for DMA
2022/12/02 08:01:53:862 notice     dpdk           common_mlx5: Unable to find 
virtually contiguous chunk for address (0x1000000000). rte_memseg_contig_walk() 
failed.
2022/12/02 08:01:53:862 notice     dpdk           common_mlx5: Unable to find 
virtually contiguous chunk for address (0x1000000000). rte_memseg_contig_walk() 
failed.


Ping from VPP to outside working fine after vpp started up and ip configured on 
vpp interface,  but after sometimes ping stopped working and vpp can not 
receive any pkts
I learned that:
Failsafe ends up creating three kernel interfaces per device.
   1. Synthetic slow path device (vmbus)
   2. SRIOV VF device (Mellanox)
   3. TAP device

Slow path packets with failsafe are received on the vmbus device, then a TC 
mirred
action runs BPF to do flow management and it goes to TAP device. From the TAP 
device
it goes to DPDK, and on to VPP...

On my setup , vmbus interface is eth1, tap device is dtap0, when ping works, I 
can capture echo response both on eth1 and dtap0 interface using tcpdump, when 
ping not working, echo response is only been captured on eth1 but not on dtap0, 
so looks the path between vmbus(eth1) and tap device(dtap0) broken,  but from 
vpp perspective, the interface status is still okay and no any error logs. I 
have no idea how to debug this issue.

appreciate if anybody can give me some suggestions

Best Regards,
Kevin

From: vpp-dev@lists.fd.io<mailto:vpp-dev@lists.fd.io> 
<vpp-dev@lists.fd.io<mailto:vpp-dev@lists.fd.io>> On Behalf Of Peter Morrow
Sent: Monday, April 11, 2022 4:49 PM
To: Stephen Hemminger 
<step...@networkplumber.org<mailto:step...@networkplumber.org>>
Cc: vpp-dev@lists.fd.io<mailto:vpp-dev@lists.fd.io>; Long Li 
<lon...@microsoft.com<mailto:lon...@microsoft.com>>
Subject: [E] COMMERCIAL BULK: Re: [vpp-dev] Issues with failsafe dpdk pmd in 
Azure


[EXTERNAL EMAIL] DO NOT CLICK links or attachments unless you recognize the 
sender and know the content is safe.
Thanks Stephen,

Very happy to stick with netvsc in that case.

Peter.
________________________________
From: Stephen Hemminger 
<step...@networkplumber.org<mailto:step...@networkplumber.org>>
Sent: 10 April 2022 18:59
To: Peter Morrow <pe...@graphiant.com<mailto:pe...@graphiant.com>>
Cc: vpp-dev@lists.fd.io<mailto:vpp-dev@lists.fd.io> 
<vpp-dev@lists.fd.io<mailto:vpp-dev@lists.fd.io>>; Long Li 
<lon...@microsoft.com<mailto:lon...@microsoft.com>>
Subject: Re: Issues with failsafe dpdk pmd in Azure

On Sat, 9 Apr 2022 09:20:43 +0000
Peter Morrow <pe...@graphiant.com<mailto:pe...@graphiant.com>> wrote:

> Hello,
>
> I currently have vpp working nicely in Azure via the netsvc pmd, however 
> after reading 
> https://docs.microsoft.com/en-us/azure/virtual-network/setup-dpdk and 
> https://fd.io/docs/vpp/v2101/usecases/vppinazure.html it sounds like I should 
> be using the failsafe pmd instead. So, I gave this a try but ran into some 
> issues, some of which I've seen discussed on this email group but none of the 
> solutions have worked for me thus far. I was able to make the failsafe pmd 
> work via dpdk-testpmd with dpdk standalone from debian bullseye (dpdk 20.11).

You have it backwards.  Failsafe is the older driver which was developed to be 
generic.
Faisafe is slower because it has to go through the kernel for the slow path.
Would like to deprecate use of failsafe but there are some use cases such as 
rte_flow which
netvsc PMD does not support. Supporting rte_flow in a software driver would 
require a significant
amount of work (same problem as virtio).


>
> I'm running vpp 22.06 and an external dpdk at version 21.11, though also see 
> the same thing when downgrading to 20.11. We have 3 interfaces, the first is 
> a non accelerated networking interface which is not to be controlled by vpp 
> (eth0) the 2nd are data interfaces which are vpp owned. My dpdk section of 
> the vpp startup config looks like this:
>
> dpdk {
>
>     dev 0ed6:00:02.0
>     vdev net_vdev_netvsc0,iface=eth1
>
>     dev 6fa1:00:02.0
>     vdev net_vdev_netvsc1,iface=eth2
>
>     base-virtaddr 0x200000000
> }
>
> When vpp starts up the 2 interfaces are shown:
>
> me@azure:~$ sudo vppctl sh hard
>               Name                Idx   Link  Hardware
> FailsafeEthernet2                  1     up   FailsafeEthernet2
>   Link speed: 50 Gbps
>   RX Queues:
>     queue thread         mode
>     0     vpp_wk_0 (1)   polling
>   Ethernet address 00:22:48:4c:c0:e5
>   FailsafeEthernet
>     carrier up full duplex max-frame-size 1518
>     flags: maybe-multiseg tx-offload rx-ip4-cksum
>     Devargs: fd(17),dev(net_tap_vsc0,remote=eth1)
>     rx: queues 1 (max 16), desc 1024 (min 0 max 65535 align 1)
>     tx: queues 8 (max 16), desc 1024 (min 0 max 65535 align 1)
>     max rx packet len: 1522
>     promiscuous: unicast off all-multicast off
>     vlan offload: strip off filter off qinq off
>     rx offload avail:  ipv4-cksum udp-cksum tcp-cksum scatter
>     rx offload active: ipv4-cksum scatter
>     tx offload avail:  ipv4-cksum udp-cksum tcp-cksum tcp-tso multi-segs
>     tx offload active: ipv4-cksum udp-cksum tcp-cksum multi-segs
>     rss avail:         ipv4-frag ipv4-tcp ipv4-udp ipv4-other ipv4 ipv6-tcp-ex
>                        ipv6-udp-ex ipv6-frag ipv6-tcp ipv6-udp ipv6-other
>                        ipv6-ex ipv6
>     rss active:        none
>     tx burst function: (not available)
>     rx burst function: (not available)
>
> FailsafeEthernet4                  2     up   FailsafeEthernet4
>   Link speed: 50 Gbps
>   RX Queues:
>     queue thread         mode
>     0     vpp_wk_1 (2)   polling
>   Ethernet address 00:22:48:4c:c6:4a
>   FailsafeEthernet
>     carrier up full duplex max-frame-size 1518
>     flags: maybe-multiseg tx-offload rx-ip4-cksum
>     Devargs: fd(33),dev(net_tap_vsc1,remote=eth2)
>     rx: queues 1 (max 16), desc 1024 (min 0 max 65535 align 1)
>     tx: queues 8 (max 16), desc 1024 (min 0 max 65535 align 1)
>     max rx packet len: 1522
>     promiscuous: unicast off all-multicast off
>     vlan offload: strip off filter off qinq off
>     rx offload avail:  ipv4-cksum udp-cksum tcp-cksum scatter
>     rx offload active: ipv4-cksum scatter
>     tx offload avail:  ipv4-cksum udp-cksum tcp-cksum tcp-tso multi-segs
>     tx offload active: ipv4-cksum udp-cksum tcp-cksum multi-segs
>     rss avail:         ipv4-frag ipv4-tcp ipv4-udp ipv4-other ipv4 ipv6-tcp-ex
>                        ipv6-udp-ex ipv6-frag ipv6-tcp ipv6-udp ipv6-other
>                        ipv6-ex ipv6
>     rss active:        none
>     tx burst function: (not available)
>     rx burst function: (not available)
>
> local0                             0    down  local0
>   Link speed: unknown
>   local
> me@azure:~$
>
> However on enabling our application we see the following messages in the the 
> vpp log & the vpp interfaces are unusable:
>
> 2022/04/09 09:11:16:424 notice     dpdk           net_failsafe: Link update 
> failed for sub_device 0 with error 1
> 2022/04/09 09:11:16:424 notice     dpdk           net_failsafe: Link update 
> failed for sub_device 0 with error 1
> 2022/04/09 09:12:32:380 notice     dpdk           common_mlx5: Unable to find 
> virtually contiguous chunk for address (0x1000000000). 
> rte_memseg_contig_walk() failed.
>
> 2022/04/09 09:12:36:144 notice     ip6/link       enable: FailsafeEthernet2
> 2022/04/09 09:12:36:144 error      interface      hw_add_del_mac_address: 
> dpdk_add_del_mac_address: mac address add/del failed: -28
> 2022/04/09 09:12:36:145 error      interface      hw_add_del_mac_address: 
> dpdk_add_del_mac_address: mac address add/del failed: -28
> 2022/04/09 09:12:36:145 error      interface      hw_add_del_mac_address: 
> dpdk_add_del_mac_address: mac address add/del failed: -28
> 2022/04/09 09:12:36:145 error      interface      hw_add_del_mac_address: 
> dpdk_add_del_mac_address: mac address add/del failed: -28
> 2022/04/09 09:12:36:146 notice     dpdk           Port 2: MAC address array 
> full
> 2022/04/09 09:12:36:146 notice     dpdk           Port 2: MAC address array 
> full
> 2022/04/09 09:12:36:146 notice     dpdk           Port 2: MAC address array 
> full
> 2022/04/09 09:12:36:146 notice     dpdk           Port 2: MAC address array 
> full
>
> Earlier snippets from dmesg:
>
> [    6.189856] IPv6: ADDRCONF(NETDEV_CHANGE): eth0: link becomes ready
> [    8.644980] hv_vmbus: registering driver uio_hv_generic
> [   12.586115] mlx5_core 0ed6:00:02.0 enP3798s2: Link up
> [   12.586914] hv_netvsc 0022484c-c0e5-0022-484c-c0e50022484c eth1: Data path 
> switched to VF: enP3798s2
> [   12.846211] mlx5_core 6fa1:00:02.0 enP28577s3: Link up
> [   12.847014] hv_netvsc 0022484c-c64a-0022-484c-c64a0022484c eth2: Data path 
> switched to VF: enP28577s3
> [   13.032549] tun: Universal TUN/TAP device driver, 1.6
> [   13.149802] Mirror/redirect action on
> [   13.414199] hv_netvsc 0022484c-c0e5-0022-484c-c0e50022484c eth1: VF slot 2 
> added
> [   13.549360] hv_netvsc 0022484c-c0e5-0022-484c-c0e50022484c eth1: VF slot 2 
> added
> [   13.716361] hv_netvsc 0022484c-c64a-0022-484c-c64a0022484c eth2: VF slot 3 
> added
> [   13.848514] hv_netvsc 0022484c-c64a-0022-484c-c64a0022484c eth2: VF slot 3 
> added
> [   15.123859] tc mirred to Houston: device dtap1 is down
> [   16.986207] tc mirred to Houston: device dtap0 is down
> [   20.129536] tc mirred to Houston: device dtap1 is down
> [   21.996293] tc mirred to Houston: device dtap0 is down
> [   25.129538] tc mirred to Houston: device dtap1 is down
> [   27.003053] tc mirred to Houston: device dtap0 is down
> [   30.143527] tc mirred to Houston: device dtap1 is down
> [   32.006497] tc mirred to Houston: device dtap0 is down
> [   35.149622] tc mirred to Houston: device dtap1 is down
> [   37.014221] tc mirred to Houston: device dtap0 is down
> [   40.158724] tc mirred to Houston: device dtap1 is down
> [   42.024193] tc mirred to Houston: device dtap0 is down
> [   45.166728] tc mirred to Houston: device dtap1 is down
> [   45.747723] tc mirred to Houston: device dtap0 is down
> [   47.030589] tc mirred to Houston: device dtap0 is down
> [   50.172306] tc mirred to Houston: device dtap1 is down
> [   52.039827] tc mirred to Houston: device dtap0 is down
> [   52.137147] hv_balloon: Max. dynamic memory size: 32768 MB
>
> The dtap0/1 is down messages are continuing.
>
> Can anyone suggest a problem with the configuration I've tried in Azure?

Failsafe ends up creating three kernel interfaces per device.
   1. Synthetic slow path device (vmbus)
   2. SRIOV VF device (Mellanox)
   3. TAP device

Slow path packets with failsafe are received on the vmbus device, then a TC 
mirred
action runs BPF to do flow management and it goes to TAP device. From the TAP 
device
it goes to DPDK, and on to VPP...

Looks like a bug in how tap devices are setup by either VPP or hv_netvsc (if 
using
that dummy setup device).

Use netvsc PMD if possible.

Long Li is the person doing most of the work on DPDK for Azure now.
________________________________
This e-mail message may contain confidential or proprietary information of 
Mavenir Systems, Inc. or its affiliates and is intended solely for the use of 
the intended recipient(s). If you are not the intended recipient of this 
message, you are hereby notified that any review, use or distribution of this 
information is absolutely prohibited and we request that you delete all copies 
in your control and contact us by e-mailing to 
secur...@mavenir.com<mailto:secur...@mavenir.com>. This message contains the 
views of its author and may not necessarily reflect the views of Mavenir 
Systems, Inc. or its affiliates, who employ systems to monitor email messages, 
but make no representation that such messages are authorized, secure, 
uncompromised, or free from computer viruses, malware, or other defects. Thank 
You
________________________________
This e-mail message may contain confidential or proprietary information of 
Mavenir Systems, Inc. or its affiliates and is intended solely for the use of 
the intended recipient(s). If you are not the intended recipient of this 
message, you are hereby notified that any review, use or distribution of this 
information is absolutely prohibited and we request that you delete all copies 
in your control and contact us by e-mailing to secur...@mavenir.com. This 
message contains the views of its author and may not necessarily reflect the 
views of Mavenir Systems, Inc. or its affiliates, who employ systems to monitor 
email messages, but make no representation that such messages are authorized, 
secure, uncompromised, or free from computer viruses, malware, or other 
defects. Thank You
-=-=-=-=-=-=-=-=-=-=-=-
Links: You receive all messages sent to this group.
View/Reply Online (#22269): https://lists.fd.io/g/vpp-dev/message/22269
Mute This Topic: https://lists.fd.io/mt/95404520/21656
Group Owner: vpp-dev+ow...@lists.fd.io
Unsubscribe: https://lists.fd.io/g/vpp-dev/leave/1480452/21656/631435203/xyzzy 
[arch...@mail-archive.com]
-=-=-=-=-=-=-=-=-=-=-=-

Reply via email to