{"action":"created","issue":{"url":"https://api.github.com/repos/Exa-Networks/exabgp/issues/793","repository_url":"https://api.github.com/repos/Exa-Networks/exabgp","labels_url":"https://api.github.com/repos/Exa-Networks/exabgp/issues/793/labels{/name}","comments_url":"https://api.github.com/repos/Exa-Networks/exabgp/issues/793/comments","events_url":"https://api.github.com/repos/Exa-Networks/exabgp/issues/793/events","html_url":"https://github.com/Exa-Networks/exabgp/issues/793","id":303350791,"number":793,"title":"exabgp will tear down it's peer when updating flow route with action redirect","user":{"login":"jasonsdn","id":17668436,"avatar_url":"https://avatars1.githubusercontent.com/u/17668436?v=4","gravatar_id":"","url":"https://api.github.com/users/jasonsdn","html_url":"https://github.com/jasonsdn","followers_url":"https://api.github.com/users/jasonsdn/followers","following_url":"https://api.github.com/users/jasonsdn/following{/other_user}","gists_url":"https://api.github.com/users/jasonsdn/gists{/gist_id}","starred_url":"https://api.github.com/users/jasonsdn/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/jasonsdn/subscriptions","organizations_url":"https://api.github.com/users/jasonsdn/orgs","repos_url":"https://api.github.com/users/jasonsdn/repos","events_url":"https://api.github.com/users/jasonsdn/events{/privacy}","received_events_url":"https://api.github.com/users/jasonsdn/received_events","type":"User","site_admin":false},"labels":[{"id":53841275,"url":"https://api.github.com/repos/Exa-Networks/exabgp/labels/bug","name":"bug","color":"fc2929","default":true}],"state":"open","locked":false,"assignee":{"login":"thomas-mangin","id":1227755,"avatar_url":"https://avatars0.githubusercontent.com/u/1227755?v=4","gravatar_id":"","url":"https://api.github.com/users/thomas-mangin","html_url":"https://github.com/thomas-mangin","followers_url":"https://api.github.com/users/thomas-mangin/followers","following_url":"https://api.github.com/users/thomas-mangin/following{/other_user}","gists_url":"https://api.github.com/users/thomas-mangin/gists{/gist_id}","starred_url":"https://api.github.com/users/thomas-mangin/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/thomas-mangin/subscriptions","organizations_url":"https://api.github.com/users/thomas-mangin/orgs","repos_url":"https://api.github.com/users/thomas-mangin/repos","events_url":"https://api.github.com/users/thomas-mangin/events{/privacy}","received_events_url":"https://api.github.com/users/thomas-mangin/received_events","type":"User","site_admin":false},"assignees":[{"login":"thomas-mangin","id":1227755,"avatar_url":"https://avatars0.githubusercontent.com/u/1227755?v=4","gravatar_id":"","url":"https://api.github.com/users/thomas-mangin","html_url":"https://github.com/thomas-mangin","followers_url":"https://api.github.com/users/thomas-mangin/followers","following_url":"https://api.github.com/users/thomas-mangin/following{/other_user}","gists_url":"https://api.github.com/users/thomas-mangin/gists{/gist_id}","starred_url":"https://api.github.com/users/thomas-mangin/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/thomas-mangin/subscriptions","organizations_url":"https://api.github.com/users/thomas-mangin/orgs","repos_url":"https://api.github.com/users/thomas-mangin/repos","events_url":"https://api.github.com/users/thomas-mangin/events{/privacy}","received_events_url":"https://api.github.com/users/thomas-mangin/received_events","type":"User","site_admin":false}],"milestone":null,"comments":0,"created_at":"2018-03-08T04:15:30Z","updated_at":"2018-03-08T14:26:55Z","closed_at":null,"author_association":"NONE","body":"<!---\r\nVerify first that your issue/request is not already reported on GitHub.\r\nAlso test if the latest release, and master branch are affected too.\r\n-->\r\n\r\n##### ISSUE TYPE\r\n<!--- Pick one below and delete the rest: -->\r\n - Bug Report\r\n \r\n##### OS\r\n<!---\r\nMention the OS you are running ExaBGP on (Linux variant if relevant)\r\nUbuntu 14.04\r\n-->\r\n\r\n##### VERSION\r\n<!--- Paste verbatim the output from “exabgp --version” between quotes below -->\r\n```\r\nlab@ubuntu-120:~/exabgp$ exabgp --version\r\nExaBGP : 4.0.2-1c737d99\r\nPython : 2.7.6 (default, Nov 23 2017, 15:49:48)  [GCC 4.8.4]\r\nUname  : Linux ubuntu-120 3.13.0-32-generic #57-Ubuntu SMP Tue Jul 15 03:51:08 UTC 2014 x86_64\r\nRoot   : /usr/local\r\nlab@ubuntu-120:~/exabgp$ \r\n\r\n```\r\n\r\n##### ENVIRONMENT \r\n<!--- Paste verbatim the output from “exabgp --di” (let us know if the output is empty) between quotes below -->\r\n```\r\n11:53:27 | 2895   | welcome         | Thank you for using ExaBGP\r\n11:53:27 | 2895   | version         | 4.0.2-1c737d99\r\n11:53:27 | 2895   | interpreter     | 2.7.6 (default, Nov 23 2017, 15:49:48)  [GCC 4.8.4]\r\n11:53:27 | 2895   | os              | Linux ubuntu-120 3.13.0-32-generic #57-Ubuntu SMP Tue Jul 15 03:51:08 UTC 2014 x86_64\r\n11:53:27 | 2895   | installation    | /usr/local\r\n11:53:27 | 2895   | advice          | environment file missing\r\n11:53:27 | 2895   | advice          | generate it using \"exabgp --fi > /usr/local/etc/exabgp/exabgp.env\"\r\n11:53:27 | 2895   | cli             | could not find the named pipes (exabgp.in and exabgp.out) required for the cli\r\n11:53:27 | 2895   | cli             | we scanned the following folders (the number is your PID):\r\n11:53:27 | 2895   | cli control     |  - /run/1000/\r\n11:53:27 | 2895   | cli control     |  - /run/\r\n11:53:27 | 2895   | cli control     |  - /var/run/1000/\r\n11:53:27 | 2895   | cli control     |  - /var/run/\r\n11:53:27 | 2895   | cli control     |  - /usr/local/run/1000/\r\n11:53:27 | 2895   | cli control     |  - /usr/local/run/\r\n11:53:27 | 2895   | cli control     |  - /usr/local/var/run/1000/\r\n11:53:27 | 2895   | cli control     |  - /usr/local/var/run/\r\n11:53:27 | 2895   | cli control     | please make them in one of the folder with the following commands:\r\n11:53:27 | 2895   | cli control     | > mkfifo /home/lab/exabgp/run/exabgp.{in,out}\r\n11:53:27 | 2895   | cli control     | > chmod 600 /home/lab/exabgp/run/exabgp.{in,out}\r\n11:53:27 | 2895   | cli control     | > chown 1000:1000 /home/lab/exabgp/run/exabgp.{in,out}\r\n11:53:27 | 2895   | configuration   | performing reload of exabgp 4.0.2-1c737d99\r\n11:53:27 | 2895   | configuration   | > neighbor         | '172.27.10.202'\r\n11:53:27 | 2895   | configuration   | . router-id        | '172.27.10.120'\r\n11:53:27 | 2895   | configuration   | . local-address    | '172.27.10.120'\r\n11:53:27 | 2895   | configuration   | . local-as         | '1'\r\n11:53:27 | 2895   | configuration   | . peer-as          | '1'\r\n11:53:27 | 2895   | configuration   | . hold-time        | '60'\r\n11:53:27 | 2895   | configuration   | . group-updates    | \r\n11:53:27 | 2895   | configuration   | > family           | \r\n11:53:27 | 2895   | configuration   | . ipv4             | 'unicast'\r\n11:53:27 | 2895   | configuration   | . ipv4             | 'nlri-mpls'\r\n11:53:27 | 2895   | configuration   | . ipv4             | 'flow'\r\n11:53:27 | 2895   | configuration   | < family           | \r\n11:53:27 | 2895   | configuration   | > capability       | \r\n11:53:27 | 2895   | configuration   | . graceful-restart | \r\n11:53:27 | 2895   | configuration   | . route-refresh    | 'enable'\r\n11:53:27 | 2895   | configuration   | < capability       | \r\n11:53:27 | 2895   | configuration   | route-refresh requested, enabling adj-rib-out\r\n11:53:27 | 2895   | configuration   | < neighbor         | \r\n11:53:27 | 2895   | configuration   | > neighbor         | '172.27.10.77'\r\n11:53:27 | 2895   | configuration   | . router-id        | '172.27.10.120'\r\n11:53:27 | 2895   | configuration   | . local-address    | '172.27.10.120'\r\n11:53:27 | 2895   | configuration   | . local-as         | '1'\r\n11:53:27 | 2895   | configuration   | . peer-as          | '1'\r\n11:53:27 | 2895   | configuration   | . hold-time        | '60'\r\n11:53:27 | 2895   | configuration   | > family           | \r\n11:53:27 | 2895   | configuration   | . ipv4             | 'unicast'\r\n11:53:27 | 2895   | configuration   | . ipv4             | 'flow'\r\n11:53:27 | 2895   | configuration   | < family           | \r\n11:53:27 | 2895   | configuration   | route-refresh requested, enabling adj-rib-out\r\n11:53:27 | 2895   | configuration   | < neighbor         | \r\n11:53:27 | 2895   | configuration   | > process          | 'abc'\r\n11:53:27 | 2895   | configuration   | . run              | 'python' '/home/lab/exabgp/http-api.py'\r\n11:53:27 | 2895   | configuration   | . encoder          | 'json'\r\n11:53:27 | 2895   | configuration   | < process          | \r\n11:53:27 | 2895   | reactor         | new peer: neighbor 172.27.10.202 local-ip 172.27.10.120 local-as 1 peer-as 1 router-id 172.27.10.120 family-allowed in-open\r\n11:53:27 | 2895   | reactor         | new peer: neighbor 172.27.10.77 local-ip 172.27.10.120 local-as 1 peer-as 1 router-id 172.27.10.120 family-allowed in-open\r\n11:53:27 | 2895   | reactor         | loaded new configuration successfully\r\n11:53:27 | 2895   | process         | forked process abc\r\n11:53:27 | 2895   | reactor         | initialising connection to peer-1\r\n11:53:27 | 2895   | reactor         | initialising connection to peer-2\r\n11:53:27 | 2895   | outgoing-1      | attempting connection to 172.27.10.202:179\r\n11:53:27 | 2895   | outgoing-2      | attempting connection to 172.27.10.77:179\r\n11:53:27 | 2895   | outgoing-1      | sending TCP payload (  87) FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF 0057 0104 0001 003C AC1B 0A78 3A02 1040 0E80 3C00 0185 8000 0101 8000 0104 8002 0601 0400 0100 0102 0601 0400 0100 0402 0601 0400 0100 8502 0202 0002 0246 0002 0641 0400 0000 01\r\n11:53:27 | 2895   | outgoing-2      | sending TCP payload (  87) FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF 0057 0104 0001 003C AC1B 0A78 3A02 1040 0E80 3C00 0185 8000 0101 8000 0104 8002 0601 0400 0100 0102 0601 0400 0100 0402 0601 0400 0100 8502 0202 0002 0246 0002 0641 0400 0000 01\r\n11:53:27 | 2895   | outgoing-1      | >> OPEN version=4 asn=1 hold_time=60 router_id=172.27.10.120 capabilities=[Multiprotocol(ipv4 unicast,ipv4 nlri-mpls,ipv4 flow), Route Refresh, Graceful Restart Flags 0x8 Time 60 ipv4/flow=0x80 ipv4/unicast=0x80 ipv4/nlri-mpls=0x80, ASN4(1), Enhanced Route Refresh]\r\n11:53:27 | 2895   | outgoing-1      | receive-timer 59 second(s) left\r\n11:53:27 | 2895   | outgoing-2      | >> OPEN version=4 asn=1 hold_time=60 router_id=172.27.10.120 capabilities=[Multiprotocol(ipv4 unicast,ipv4 nlri-mpls,ipv4 flow), Route Refresh, Graceful Restart Flags 0x8 Time 60 ipv4/flow=0x80 ipv4/unicast=0x80 ipv4/nlri-mpls=0x80, ASN4(1), Enhanced Route Refresh]\r\n11:53:27 | 2895   | outgoing-2      | received TCP payload (  19) FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF 0043 01\r\n11:53:27 | 2895   | outgoing-2      | received TCP payload (  48) 0400 0100 3C64 6464 0226 0206 0104 0001 0004 0206 0104 0001 0085 0202 8000 0202 0200 0204 4002 0078 0206 4104 0000 0001\r\n11:53:27 | 2895   | outgoing-2      | << message of type OPEN\r\n11:53:27 | 2895   | outgoing-2      | << OPEN version=4 asn=1 hold_time=60 router_id=100.100.100.2 capabilities=[Multiprotocol(ipv4 nlri-mpls,ipv4 flow), Route Refresh, Graceful Restart Flags 0x0 Time 120 , ASN4(1), Route Refresh]\r\n11:53:27 | 2895   | outgoing-2      | receive-timer 59 second(s) left\r\n11:53:27 | 2895   | outgoing-2      | --------------------------------------------------------------------\r\n11:53:27 | 2895   | outgoing-2      | the connection can not carry the following family/families\r\n11:53:27 | 2895   | outgoing-2      |  - peer is not configured for ipv4/unicast\r\n11:53:27 | 2895   | outgoing-2      | therefore no routes of this kind can be announced on the connection\r\n11:53:27 | 2895   | outgoing-2      | --------------------------------------------------------------------\r\n11:53:27 | 2895   | outgoing-2      | sending TCP payload (  19) FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF 0013 04\r\n11:53:27 | 2895   | process         | command from process abc : serving at port 5001 \r\n11:53:27 | 2895   | process         | responding to abc : error\r\n11:53:27 | 2895   | api             | command from process not understood : serving at port 5001\r\n11:53:27 | 2895   | outgoing-1      | received TCP payload (  19) FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF 0057 01\r\n11:53:27 | 2895   | outgoing-1      | received TCP payload (  68) 0400 0100 3C64 6464 013A 0206 0104 0001 0080 0206 0104 0001 0081 0206 0104 0001 0004 0206 0104 0001 0085 0202 8000 0202 0200 0204 4002 4078 0206 4104 0000 0001 0202 4700\r\n11:53:27 | 2895   | outgoing-1      | << message of type OPEN\r\n11:53:27 | 2895   | outgoing-1      | << OPEN version=4 asn=1 hold_time=60 router_id=100.100.100.1 capabilities=[Multiprotocol(ipv4 mpls-vpn,ipv4 unknown safi 129,ipv4 nlri-mpls,ipv4 flow), Route Refresh, Graceful Restart Flags 0x4 Time 120 , ASN4(1), Unassigned 71, Route Refresh]\r\n11:53:27 | 2895   | outgoing-1      | --------------------------------------------------------------------\r\n11:53:27 | 2895   | outgoing-1      | the connection can not carry the following family/families\r\n11:53:27 | 2895   | outgoing-1      |  - exabgp is not configured for ipv4/mpls-vpn\r\n11:53:27 | 2895   | outgoing-1      |  - exabgp is not configured for ipv4/unknown safi 129\r\n11:53:27 | 2895   | outgoing-1      |  - peer is not configured for ipv4/unicast\r\n11:53:27 | 2895   | outgoing-1      | therefore no routes of this kind can be announced on the connection\r\n11:53:27 | 2895   | outgoing-1      | --------------------------------------------------------------------\r\n11:53:27 | 2895   | outgoing-1      | sending TCP payload (  19) FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF 0013 04\r\n11:53:27 | 2895   | outgoing-2      | >> KEEPALIVE (OPENCONFIRM)\r\n11:53:27 | 2895   | outgoing-1      | >> KEEPALIVE (OPENCONFIRM)\r\n11:53:27 | 2895   | outgoing-2      | received TCP payload (  19) FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF 0013 04\r\n11:53:27 | 2895   | outgoing-2      | << message of type KEEPALIVE\r\n11:53:27 | 2895   | outgoing-2      | receive-timer 59 second(s) left\r\n11:53:27 | 2895   | outgoing-1      | receive-timer 59 second(s) left\r\n11:53:27 | 2895   | reactor         | connected to peer-2 with outgoing-2 172.27.10.120-172.27.10.77\r\n11:53:27 | 2895   | outgoing-2      | received TCP payload (  19) FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF 0013 04\r\n11:53:27 | 2895   | outgoing-2      | << message of type KEEPALIVE\r\n11:53:27 | 2895   | outgoing-2      | send-timer 20 second(s) left\r\n11:53:27 | 2895   | outgoing-2      | received TCP payload (  19) FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF 001E 02\r\n11:53:27 | 2895   | outgoing-2      | received TCP payload (  11) 0000 0007 900F 0003 0001 04\r\n11:53:27 | 2895   | outgoing-2      | << message of type UPDATE\r\n11:53:27 | 2895   | parser          | parsing UPDATE (  11) 0000 0007 900F 0003 0001 04\r\n11:53:27 | 2895   | peer-2          | << UPDATE #1\r\n11:53:27 | 2895   | peer-2          |    UPDATE #1 nlri  (  11) eor 1/4 (ipv4 nlri-mpls)\r\n11:53:27 | 2895   | outgoing-2      | sending TCP payload (  30) FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF 001E 0200 0000 0790 0F00 0300 0104\r\n11:53:27 | 2895   | outgoing-2      | >> EOR ipv4 nlri-mpls\r\n11:53:27 | 2895   | outgoing-2      | sending TCP payload (  30) FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF 001E 0200 0000 0790 0F00 0300 0185\r\n11:53:27 | 2895   | outgoing-2      | >> EOR ipv4 flow\r\n11:53:27 | 2895   | peer-2          | >> EOR(s)\r\n11:53:27 | 2895   | outgoing-2      | received TCP payload (  19) FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF 001E 02\r\n11:53:27 | 2895   | outgoing-2      | received TCP payload (  11) 0000 0007 900F 0003 0001 85\r\n11:53:27 | 2895   | outgoing-2      | << message of type UPDATE\r\n11:53:27 | 2895   | parser          | parsing UPDATE (  11) 0000 0007 900F 0003 0001 85\r\n11:53:27 | 2895   | peer-2          | << UPDATE #2\r\n11:53:27 | 2895   | peer-2          |    UPDATE #2 nlri  (  11) eor 1/133 (ipv4 flow)\r\n11:53:27 | 2895   | outgoing-1      | received TCP payload (  19) FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF 0013 04\r\n11:53:27 | 2895   | outgoing-1      | << message of type KEEPALIVE\r\n11:53:27 | 2895   | reactor         | connected to peer-1 with outgoing-1 172.27.10.120-172.27.10.202\r\n11:53:27 | 2895   | outgoing-1      | received TCP payload (  19) FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF 001E 02\r\n11:53:27 | 2895   | outgoing-1      | received TCP payload (  11) 0000 0007 900F 0003 0001 04\r\n11:53:27 | 2895   | outgoing-1      | << message of type UPDATE\r\n11:53:27 | 2895   | parser          | parsing UPDATE (  11) 0000 0007 900F 0003 0001 04\r\n11:53:27 | 2895   | outgoing-1      | send-timer 20 second(s) left\r\n11:53:27 | 2895   | peer-1          | << UPDATE #1\r\n11:53:27 | 2895   | peer-1          |    UPDATE #1 nlri  (  11) eor 1/4 (ipv4 nlri-mpls)\r\n11:53:27 | 2895   | outgoing-1      | received TCP payload (  19) FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF 001E 02\r\n11:53:27 | 2895   | outgoing-1      | received TCP payload (  11) 0000 0007 900F 0003 0001 85\r\n11:53:27 | 2895   | outgoing-1      | << message of type UPDATE\r\n11:53:27 | 2895   | parser          | parsing UPDATE (  11) 0000 0007 900F 0003 0001 85\r\n11:53:27 | 2895   | peer-1          | << UPDATE #2\r\n11:53:27 | 2895   | peer-1          |    UPDATE #2 nlri  (  11) eor 1/133 (ipv4 flow)\r\n11:53:27 | 2895   | outgoing-1      | sending TCP payload (  30) FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF 001E 0200 0000 0790 0F00 0300 0104\r\n11:53:27 | 2895   | outgoing-1      | >> EOR ipv4 nlri-mpls\r\n11:53:27 | 2895   | outgoing-1      | sending TCP payload (  30) FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF 001E 0200 0000 0790 0F00 0300 0185\r\n11:53:27 | 2895   | outgoing-1      | >> EOR ipv4 flow\r\n11:53:27 | 2895   | peer-1          | >> EOR(s)\r\n11:53:28 | 2895   | outgoing-1      | send-timer 19 second(s) left\r\n11:53:28 | 2895   | outgoing-2      | send-timer 19 second(s) left\r\n11:53:28 | 2895   | outgoing-2      | receive-timer 58 second(s) left\r\n11:53:28 | 2895   | outgoing-1      | receive-timer 58 second(s) left\r\n11:53:29 | 2895   | outgoing-1      | send-timer 18 second(s) left\r\n11:53:29 | 2895   | outgoing-2      | send-timer 18 second(s) left\r\n11:53:29 | 2895   | outgoing-2      | receive-timer 57 second(s) left\r\n11:53:29 | 2895   | outgoing-1      | receive-timer 57 second(s) left\r\n11:53:30 | 2895   | outgoing-1      | send-timer 17 second(s) left\r\n11:53:30 | 2895   | outgoing-2      | send-timer 17 second(s) left\r\n11:53:30 | 2895   | outgoing-2      | receive-timer 56 second(s) left\r\n11:53:30 | 2895   | outgoing-1      | receive-timer 56 second(s) left\r\n11:53:31 | 2895   | outgoing-1      | send-timer 16 second(s) left\r\n11:53:31 | 2895   | outgoing-2      | send-timer 16 second(s) left\r\n11:53:31 | 2895   | outgoing-2      | receive-timer 55 second(s) left\r\n11:53:31 | 2895   | outgoing-1      | receive-timer 55 second(s) left\r\n11:53:32 | 2895   | outgoing-1      | send-timer 15 second(s) left\r\n11:53:32 | 2895   | outgoing-2      | send-timer 15 second(s) left\r\n11:53:32 | 2895   | outgoing-2      | receive-timer 54 second(s) left\r\n11:53:32 | 2895   | outgoing-1      | receive-timer 54 second(s) left\r\n11:53:33 | 2895   | outgoing-1      | send-timer 14 second(s) left\r\n11:53:33 | 2895   | outgoing-2      | send-timer 14 second(s) left\r\n11:53:33 | 2895   | process         | command from process abc : neighbor 172.27.10.77 announce flow route source 10.30.2.0/24 destination 210.210.210.0/24 redirect 65000:1 \r\n11:53:33 | 2895   | reactor         | async | abc | neighbor 172.27.10.77 announce flow route source 10.30.2.0/24 destination 210.210.210.0/24 redirect 65000:1\r\n11:53:33 | 2895   | configuration   | . route            | 'source' '10.30.2.0/24' 'destination' '210.210.210.0/24' 'redirect' '65000:1'\r\n11:53:33 | 2895   | api             | flow added to neighbor 172.27.10.77 local-ip 172.27.10.120 local-as 1 peer-as 1 router-id 172.27.10.120 family-allowed in-open : flow destination-ipv4 210.210.210.0/24 source-ipv4 10.30.2.0/24 next-hop None extended-community redirect:65000:1\r\n11:53:33 | 2895   | reactor         | performing dynamic route update\r\n11:53:33 | 2895   | process         | responding to abc : done\r\n11:53:33 | 2895   | reactor         | \r\n11:53:33 | 2895   | reactor         | ********************************************************************************\r\n11:53:33 | 2895   | reactor         | EXABGP MISBEHAVED / HELP US FIX IT\r\n11:53:33 | 2895   | reactor         | ********************************************************************************\r\n11:53:33 | 2895   | reactor         | \r\n11:53:33 | 2895   | reactor         | Sorry, you encountered a problem with ExaBGP, as the problem only affects one\r\n11:53:33 | 2895   | reactor         | peer, we are trying to keep the program running.\r\n11:53:33 | 2895   | reactor         | \r\n11:53:33 | 2895   | reactor         | There are a few things you can do to help us (and yourself):\r\n11:53:33 | 2895   | reactor         | - make sure you are running the latest version of the code available at\r\n11:53:33 | 2895   | reactor         |   https://github.com/Exa-Networks/exabgp/releases/latest\r\n11:53:33 | 2895   | reactor         | - if so report the issue on https://github.com/Exa-Networks/exabgp/issues\r\n11:53:33 | 2895   | reactor         |   so it can be fixed (github can be searched for similar reports)\r\n11:53:33 | 2895   | reactor         | \r\n11:53:33 | 2895   | reactor         | PLEASE, when reporting, do include as much information as you can:\r\n11:53:33 | 2895   | reactor         | - do not obfuscate any data (feel free to send us a private  email with the\r\n11:53:33 | 2895   | reactor         |   extra information if your business policy is strict on information sharing)\r\n11:53:33 | 2895   | reactor         |   https://github.com/Exa-Networks/exabgp/wiki/FAQ\r\n11:53:33 | 2895   | reactor         | - if you can reproduce the issue, run ExaBGP with the command line option -d\r\n11:53:33 | 2895   | reactor         |   it provides us with much needed information to fix problems quickly\r\n11:53:33 | 2895   | reactor         | - include the information presented below\r\n11:53:33 | 2895   | reactor         | \r\n11:53:33 | 2895   | reactor         | Should you not receive an acknowledgment of your issue on github (assignement,\r\n11:53:33 | 2895   | reactor         | comment, or similar) within a few hours, feel free to email us to make sure\r\n11:53:33 | 2895   | reactor         | it was not overlooked. (please keep in mind the authors are based in GMT/Europe)\r\n11:53:33 | 2895   | reactor         | \r\n11:53:33 | 2895   | reactor         | ********************************************************************************\r\n11:53:33 | 2895   | reactor         | -- Please provide ALL the information below on :\r\n11:53:33 | 2895   | reactor         | -- https://github.com/Exa-Networks/exabgp/issues\r\n11:53:33 | 2895   | reactor         | ********************************************************************************\r\n11:53:33 | 2895   | reactor         | \r\n11:53:33 | 2895   | reactor         | ExaBGP version : 4.0.2-1c737d99\r\n11:53:33 | 2895   | reactor         | Python version : 2.7.6 (default, Nov 23 2017, 15:49:48)  [GCC 4.8.4]\r\n11:53:33 | 2895   | reactor         | System Uname   : #57-Ubuntu SMP Tue Jul 15 03:51:08 UTC 2014\r\n11:53:33 | 2895   | reactor         | System MaxInt  : 9223372036854775807\r\n11:53:33 | 2895   | reactor         | \r\n11:53:33 | 2895   | reactor         | \r\n11:53:33 | 2895   | reactor         | \r\n11:53:33 | 2895   | reactor         | \r\n11:53:33 | 2895   | reactor         | <type 'exceptions.AttributeError'>\r\n11:53:33 | 2895   | reactor         | 'NoneType' object has no attribute 'ton'\r\n11:53:33 | 2895   | reactor         | Traceback (most recent call last):\r\n11:53:33 | 2895   | reactor         |   File \"/usr/local/lib/python2.7/dist-packages/exabgp/reactor/peer.py\", line 530, in _run\r\n11:53:33 | 2895   | reactor         |     for action in self._main():\r\n11:53:33 | 2895   | reactor         |   File \"/usr/local/lib/python2.7/dist-packages/exabgp/reactor/peer.py\", line 479, in _main\r\n11:53:33 | 2895   | reactor         |     six.next(new_routes)\r\n11:53:33 | 2895   | reactor         |   File \"/usr/local/lib/python2.7/dist-packages/exabgp/reactor/protocol.py\", line 347, in new_update\r\n11:53:33 | 2895   | reactor         |     for message in update.messages(self.negotiated,include_withdraw):\r\n11:53:33 | 2895   | reactor         |   File \"/usr/local/lib/python2.7/dist-packages/exabgp/bgp/message/update/__init__.py\", line 157, in messages\r\n11:53:33 | 2895   | reactor         |     for mprnlri in mp_announce.packed_attributes(negotiated, msg_size - len(withdraws + announced)):\r\n11:53:33 | 2895   | reactor         |   File \"/usr/local/lib/python2.7/dist-packages/exabgp/bgp/message/update/attribute/mprnlri.py\", line 73, in packed_attributes\r\n11:53:33 | 2895   | reactor         |     nexthop = nh_rd + nlri.nexthop.ton(negotiated,nlri.afi)\r\n11:53:33 | 2895   | reactor         | AttributeError: 'NoneType' object has no attribute 'ton'\r\n11:53:33 | 2895   | reactor         | \r\n11:53:33 | 2895   | reactor         | ********************************************************************************\r\n11:53:33 | 2895   | reactor         | -- Please provide _ALL_ the information above on :\r\n11:53:33 | 2895   | reactor         | -- https://github.com/Exa-Networks/exabgp/issues\r\n11:53:33 | 2895   | reactor         | ********************************************************************************\r\n11:53:33 | 2895   | reactor         | \r\n11:53:33 | 2895   | outgoing-2      | peer reset, message [] error[]\r\n11:53:33 | 2895   | outgoing-2      | outgoing-2 172.27.10.120-172.27.10.77, closing connection\r\n11:53:33 | 2895   | reactor         | initialising connection to peer-2\r\n11:53:33 | 2895   | outgoing-3      | attempting connection to 172.27.10.77:179\r\n11:53:33 | 2895   | outgoing-3      | sending TCP payload (  87) FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF 0057 0104 0001 003C AC1B 0A78 3A02 1040 0E80 3C00 0185 8000 0101 8000 0104 8002 0601 0400 0100 0102 0601 0400 0100 0402 0601 0400 0100 8502 0202 0002 0246 0002 0641 0400 0000 01\r\n11:53:33 | 2895   | outgoing-3      | >> OPEN version=4 asn=1 hold_time=60 router_id=172.27.10.120 capabilities=[Multiprotocol(ipv4 unicast,ipv4 nlri-mpls,ipv4 flow), Route Refresh, Graceful Restart Flags 0x8 Time 60 ipv4/flow=0x80 ipv4/unicast=0x80 ipv4/nlri-mpls=0x80, ASN4(1), Enhanced Route Refresh]\r\n11:53:33 | 2895   | outgoing-3      | receive-timer 59 second(s) left\r\n11:53:33 | 2895   | outgoing-3      | received TCP payload (  19) FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF 0043 01\r\n11:53:33 | 2895   | outgoing-3      | received TCP payload (  48) 0400 0100 3C64 6464 0226 0206 0104 0001 0004 0206 0104 0001 0085 0202 8000 0202 0200 0204 4002 0078 0206 4104 0000 0001\r\n11:53:33 | 2895   | outgoing-3      | << message of type OPEN\r\n11:53:33 | 2895   | outgoing-3      | << OPEN version=4 asn=1 hold_time=60 router_id=100.100.100.2 capabilities=[Multiprotocol(ipv4 nlri-mpls,ipv4 flow), Route Refresh, Graceful Restart Flags 0x0 Time 120 , ASN4(1), Route Refresh]\r\n11:53:33 | 2895   | outgoing-3      | --------------------------------------------------------------------\r\n11:53:33 | 2895   | outgoing-3      | the connection can not carry the following family/families\r\n11:53:33 | 2895   | outgoing-3      |  - peer is not configured for ipv4/unicast\r\n11:53:33 | 2895   | outgoing-3      | therefore no routes of this kind can be announced on the connection\r\n11:53:33 | 2895   | outgoing-3      | --------------------------------------------------------------------\r\n11:53:33 | 2895   | outgoing-3      | sending TCP payload (  19) FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF 0013 04\r\n11:53:33 | 2895   | outgoing-3      | >> KEEPALIVE (OPENCONFIRM)\r\n11:53:33 | 2895   | outgoing-3      | received TCP payload (  19) FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF 0013 04\r\n11:53:33 | 2895   | outgoing-3      | << message of type KEEPALIVE\r\n11:53:33 | 2895   | outgoing-3      | receive-timer 59 second(s) left\r\n11:53:33 | 2895   | reactor         | connected to peer-2 with outgoing-3 172.27.10.120-172.27.10.77\r\n11:53:33 | 2895   | outgoing-3      | send-timer 20 second(s) left\r\n11:53:33 | 2895   | reactor         | \r\n11:53:33 | 2895   | reactor         | ********************************************************************************\r\n\r\n```\r\n\r\n<!--- You can also use gist.github.com links for larger files -->\r\n\r\n##### CONFIGURATION\r\n<!--- Paste verbatim your configuration file\r\n```\r\nlab@ubuntu-120:~/exabgp$ cat httpapi.conf \r\n\r\nneighbor 172.27.10.202 {         \r\n      router-id 172.27.10.120;\r\n      local-address 172.27.10.120;\r\n      local-as 1;\r\n      peer-as 1;\r\n      hold-time 60;\r\n      group-updates;\r\n      family {\r\n             ipv4 unicast;\r\n             ipv4 nlri-mpls;\r\n             ipv4 flow;\r\n      }\r\n      capability {\r\n             graceful-restart;\r\n             route-refresh enable;\r\n      }\r\n\r\n}\r\n\r\nneighbor 172.27.10.77 {\r\n      router-id 172.27.10.120;\r\n      local-address 172.27.10.120;\r\n      local-as 1;\r\n      peer-as 1;\r\n      hold-time 60;\r\n      family {\r\n             ipv4 unicast;\r\n             ipv4 flow;\r\n      }\r\n\r\n}\r\n\r\n\r\n      process abc{\r\n          run python /home/lab/exabgp/http-api.py;\r\n          encoder json;\r\n      }            \r\n\r\nlab@ubuntu-120:~/exabgp$\r\n\r\n```\r\n\r\n<!--- You can also use gist.github.com links for larger files -->\r\n\r\n##### SUMMARY\r\n<!--- Explain the problem briefly -->\r\nI am testing flowspec with exabgp, and updating routes by using http api. I use the curl form.\r\nexabgp works fine when using accept/discard options, for example:\r\ncurl --form \"command=neighbor 172.27.10.77 announce flow route source 10.30.2.0/24 destination 210.210.210.0/24 accept\" http://localhost:5001/neighbor 172.27.10.77 announce flow route source 10.30.2.0/24 destination 210.210.210.0/24 accept\r\n\r\nBut exabgp will tear down neighbor when using redirect option, for example:\r\ncurl --form \"command=neighbor 172.27.10.77 announce flow route source 10.30.2.0/24 destination 210.210.210.0/24 redirect 65000:1\" http://localhost:5001/neighbor 172.27.10.77 announce flow route source 10.30.2.0/24 destination 210.210.210.0/24 redirect 65000:1\r\n\r\n##### STEPS TO REPRODUCE\r\n<!---\r\nFor bugs, please if possible, please run with the \"-d\" option and provide the full output,\r\nIf not possible, please provide the full fault section as reported by ExaBGP\r\n-->\r\n\r\n\r\n##### EXPECTED RESULTS\r\n<!--- What did you expect to happen when running the steps above? -->\r\nI expect exabgp can update routes to peer when using redirect option.\r\n\r\n##### ACTUAL RESULTS\r\n<!--- What actually happened? -->\r\nexabgp tears down it's peer and try to reopen \r\n##### IMPORTANCE\r\n<!-- Please let us know if the issue is affecting you in a production environment -->\r\n\r\n"},"comment":{"url":"https://api.github.com/repos/Exa-Networks/exabgp/issues/comments/371501894","html_url":"https://github.com/Exa-Networks/exabgp/issues/793#issuecomment-371501894","issue_url":"https://api.github.com/repos/Exa-Networks/exabgp/issues/793","id":371501894,"user":{"login":"thomas-mangin","id":1227755,"avatar_url":"https://avatars0.githubusercontent.com/u/1227755?v=4","gravatar_id":"","url":"https://api.github.com/users/thomas-mangin","html_url":"https://github.com/thomas-mangin","followers_url":"https://api.github.com/users/thomas-mangin/followers","following_url":"https://api.github.com/users/thomas-mangin/following{/other_user}","gists_url":"https://api.github.com/users/thomas-mangin/gists{/gist_id}","starred_url":"https://api.github.com/users/thomas-mangin/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/thomas-mangin/subscriptions","organizations_url":"https://api.github.com/users/thomas-mangin/orgs","repos_url":"https://api.github.com/users/thomas-mangin/repos","events_url":"https://api.github.com/users/thomas-mangin/events{/privacy}","received_events_url":"https://api.github.com/users/thomas-mangin/received_events","type":"User","site_admin":false},"created_at":"2018-03-08T14:26:55Z","updated_at":"2018-03-08T14:26:55Z","author_association":"OWNER","body":"Sorry for this bug report, I should be able to look into this issue in the next few days."}}
{"actor":{"display_login":"thomas-mangin"}}