)]}'
{"lib/neutron_plugins/services/l3":[{"author":{"_account_id":6524,"name":"Henry Gessau","email":"HenryG@gessau.net","username":"gessau"},"change_message_id":"45734370f91c08ee0f965491f17ea58f8161d05d","unresolved":false,"context_lines":[{"line_number":121,"context_line":"            _move_neutron_addresses_route \"$PUBLIC_INTERFACE\" \"$OVS_PHYSICAL_BRIDGE\" False False \"inet6\""},{"line_number":122,"context_line":"        fi"},{"line_number":123,"context_line":"    else"},{"line_number":124,"context_line":"        sudo iptables -t nat -A POSTROUTING -o $default_route_dev -s $FLOATING_RANGE -j MASQUERADE"},{"line_number":125,"context_line":"    fi"},{"line_number":126,"context_line":"}"},{"line_number":127,"context_line":""}],"source_content_type":"application/x-shellscript","patch_set":1,"id":"7a8ec9b2_7eb5f87b","line":124,"range":{"start_line":124,"start_character":48,"end_line":124,"end_character":65},"updated":"2016-09-17 23:38:07.000000000","message":"iptables barfs when more than one device is passed here.","commit_id":"a5dedd10332963eb61c9c4a4e0af7638580a9699"},{"author":{"_account_id":13252,"name":"Dr. Jens Harbott","display_name":"Jens Harbott (frickler)","email":"frickler@offenerstapel.de","username":"jrosenboom"},"change_message_id":"85571a042b0fe852a97256e7e8c1768b52921d1d","unresolved":false,"context_lines":[{"line_number":121,"context_line":"            _move_neutron_addresses_route \"$PUBLIC_INTERFACE\" \"$OVS_PHYSICAL_BRIDGE\" False False \"inet6\""},{"line_number":122,"context_line":"        fi"},{"line_number":123,"context_line":"    else"},{"line_number":124,"context_line":"        sudo iptables -t nat -A POSTROUTING -o $default_route_dev -s $FLOATING_RANGE -j MASQUERADE"},{"line_number":125,"context_line":"    fi"},{"line_number":126,"context_line":"}"},{"line_number":127,"context_line":""}],"source_content_type":"application/x-shellscript","patch_set":1,"id":"7a8ec9b2_e0331df4","line":124,"in_reply_to":"7a8ec9b2_7eb5f87b","updated":"2016-09-18 08:15:25.000000000","message":"Right, but wouldn\u0027t we need to make one iptables entry per device with a default route in order to make this work completely? Otherwise traffic going out via the second default route will not get masqueraded.","commit_id":"a5dedd10332963eb61c9c4a4e0af7638580a9699"},{"author":{"_account_id":6524,"name":"Henry Gessau","email":"HenryG@gessau.net","username":"gessau"},"change_message_id":"01f24dbae59d39372b09d8439f37db0e779ad1fb","unresolved":false,"context_lines":[{"line_number":121,"context_line":"            _move_neutron_addresses_route \"$PUBLIC_INTERFACE\" \"$OVS_PHYSICAL_BRIDGE\" False False \"inet6\""},{"line_number":122,"context_line":"        fi"},{"line_number":123,"context_line":"    else"},{"line_number":124,"context_line":"        sudo iptables -t nat -A POSTROUTING -o $default_route_dev -s $FLOATING_RANGE -j MASQUERADE"},{"line_number":125,"context_line":"    fi"},{"line_number":126,"context_line":"}"},{"line_number":127,"context_line":""}],"source_content_type":"application/x-shellscript","patch_set":1,"id":"7a8ec9b2_b0da4415","line":124,"in_reply_to":"7a8ec9b2_e0331df4","updated":"2016-09-18 14:15:28.000000000","message":"Yup.","commit_id":"a5dedd10332963eb61c9c4a4e0af7638580a9699"},{"author":{"_account_id":6524,"name":"Henry Gessau","email":"HenryG@gessau.net","username":"gessau"},"change_message_id":"45734370f91c08ee0f965491f17ea58f8161d05d","unresolved":false,"context_lines":[{"line_number":375,"context_line":"        # This is needed for neutron-based devstack clouds to work in"},{"line_number":376,"context_line":"        # IPv6-only clouds in the gate. Please do not remove this without"},{"line_number":377,"context_line":"        # talking to folks in Infra."},{"line_number":378,"context_line":"        sudo sysctl -w net.ipv6.conf.$default_route_dev.accept_ra\u003d2"},{"line_number":379,"context_line":"        # Ensure IPv6 forwarding is enabled on the host"},{"line_number":380,"context_line":"        sudo sysctl -w net.ipv6.conf.all.forwarding\u003d1"},{"line_number":381,"context_line":"        # Configure and enable public bridge"}],"source_content_type":"application/x-shellscript","patch_set":1,"id":"7a8ec9b2_9eb80477","line":378,"range":{"start_line":378,"start_character":38,"end_line":378,"end_character":55},"updated":"2016-09-17 23:38:07.000000000","message":"This would also fail.","commit_id":"a5dedd10332963eb61c9c4a4e0af7638580a9699"},{"author":{"_account_id":6524,"name":"Henry Gessau","email":"HenryG@gessau.net","username":"gessau"},"change_message_id":"e5cd9dcf8871d6da812a6ae3b49b4f87db95a793","unresolved":false,"context_lines":[{"line_number":88,"context_line":"SUBNETPOOL_SIZE_V4\u003d${SUBNETPOOL_SIZE_V4:-24}"},{"line_number":89,"context_line":"SUBNETPOOL_SIZE_V6\u003d${SUBNETPOOL_SIZE_V6:-64}"},{"line_number":90,"context_line":""},{"line_number":91,"context_line":"default_route_devs\u003d$(ip route | grep ^default | awk \u0027{printf \"%s \", $5}\u0027)"},{"line_number":92,"context_line":"die_if_not_set $LINENO default_route_devs \"Failure retrieving default route devices\""},{"line_number":93,"context_line":""},{"line_number":94,"context_line":"function _determine_config_l3 {"}],"source_content_type":"application/x-shellscript","patch_set":3,"id":"7a8ec9b2_10cdb830","line":91,"range":{"start_line":91,"start_character":48,"end_line":91,"end_character":72},"updated":"2016-09-18 14:30:10.000000000","message":"Instead of this I could do\n\n  cut -d\u0027 \u0027 -f5 | xargs\n\nNot sure what is preferred?","commit_id":"42b610c1a4c1b0f1ab17c40ccb48e4b83e1d96ef"},{"author":{"_account_id":13252,"name":"Dr. Jens Harbott","display_name":"Jens Harbott (frickler)","email":"frickler@offenerstapel.de","username":"jrosenboom"},"change_message_id":"f649b171c02aa52d4c78b5c3d29a7a7375429325","unresolved":false,"context_lines":[{"line_number":88,"context_line":"SUBNETPOOL_SIZE_V4\u003d${SUBNETPOOL_SIZE_V4:-24}"},{"line_number":89,"context_line":"SUBNETPOOL_SIZE_V6\u003d${SUBNETPOOL_SIZE_V6:-64}"},{"line_number":90,"context_line":""},{"line_number":91,"context_line":"default_route_devs\u003d$(ip route | grep ^default | awk \u0027{printf \"%s \", $5}\u0027)"},{"line_number":92,"context_line":"die_if_not_set $LINENO default_route_devs \"Failure retrieving default route devices\""},{"line_number":93,"context_line":""},{"line_number":94,"context_line":"function _determine_config_l3 {"}],"source_content_type":"application/x-shellscript","patch_set":3,"id":"7a8ec9b2_6ea4424a","line":91,"in_reply_to":"7a8ec9b2_10cdb830","updated":"2016-09-19 11:54:26.000000000","message":"IMO you could stick to the original awk expression here.\n\ndevs\u003d\"eth0\neth1\"\nfor d in $devs; do ... done\n\nworks just as well.","commit_id":"42b610c1a4c1b0f1ab17c40ccb48e4b83e1d96ef"},{"author":{"_account_id":6524,"name":"Henry Gessau","email":"HenryG@gessau.net","username":"gessau"},"change_message_id":"37ef842bed2b74962ca40a090f3d792d55b1497d","unresolved":false,"context_lines":[{"line_number":88,"context_line":"SUBNETPOOL_SIZE_V4\u003d${SUBNETPOOL_SIZE_V4:-24}"},{"line_number":89,"context_line":"SUBNETPOOL_SIZE_V6\u003d${SUBNETPOOL_SIZE_V6:-64}"},{"line_number":90,"context_line":""},{"line_number":91,"context_line":"default_route_devs\u003d$(ip route | grep ^default | awk \u0027{printf \"%s \", $5}\u0027)"},{"line_number":92,"context_line":"die_if_not_set $LINENO default_route_devs \"Failure retrieving default route devices\""},{"line_number":93,"context_line":""},{"line_number":94,"context_line":"function _determine_config_l3 {"}],"source_content_type":"application/x-shellscript","patch_set":3,"id":"7a8ec9b2_41abd4d6","line":91,"in_reply_to":"7a8ec9b2_6ea4424a","updated":"2016-09-19 12:54:42.000000000","message":"Indeed it does. I\u0027ll revert to that.","commit_id":"42b610c1a4c1b0f1ab17c40ccb48e4b83e1d96ef"},{"author":{"_account_id":13252,"name":"Dr. Jens Harbott","display_name":"Jens Harbott (frickler)","email":"frickler@offenerstapel.de","username":"jrosenboom"},"change_message_id":"f649b171c02aa52d4c78b5c3d29a7a7375429325","unresolved":false,"context_lines":[{"line_number":373,"context_line":""},{"line_number":374,"context_line":"    # This logic is specific to using the l3-agent for layer 3"},{"line_number":375,"context_line":"    if is_service_enabled q-l3 || is_service_enabled neutron-l3; then"},{"line_number":376,"context_line":"        # Ensure IPv6 RAs are accepted on the interfaces with the default route."},{"line_number":377,"context_line":"        # This is needed for neutron-based devstack clouds to work in"},{"line_number":378,"context_line":"        # IPv6-only clouds in the gate. Please do not remove this without"},{"line_number":379,"context_line":"        # talking to folks in Infra."}],"source_content_type":"application/x-shellscript","patch_set":3,"id":"7a8ec9b2_4e76a606","line":376,"updated":"2016-09-19 11:54:26.000000000","message":"Hmm, not sure if it is reasonable to get into more and more edgy borderline cases, but why do we need IPv6 RAs on the interfaces that have the IPv4 default routes? The set may be the same for many cases, but wouldn\u0027t it be cleaner to look at the set of interfaces within \"ip -6 route show | grep default\" here?","commit_id":"42b610c1a4c1b0f1ab17c40ccb48e4b83e1d96ef"},{"author":{"_account_id":6524,"name":"Henry Gessau","email":"HenryG@gessau.net","username":"gessau"},"change_message_id":"37ef842bed2b74962ca40a090f3d792d55b1497d","unresolved":false,"context_lines":[{"line_number":373,"context_line":""},{"line_number":374,"context_line":"    # This logic is specific to using the l3-agent for layer 3"},{"line_number":375,"context_line":"    if is_service_enabled q-l3 || is_service_enabled neutron-l3; then"},{"line_number":376,"context_line":"        # Ensure IPv6 RAs are accepted on the interfaces with the default route."},{"line_number":377,"context_line":"        # This is needed for neutron-based devstack clouds to work in"},{"line_number":378,"context_line":"        # IPv6-only clouds in the gate. Please do not remove this without"},{"line_number":379,"context_line":"        # talking to folks in Infra."}],"source_content_type":"application/x-shellscript","patch_set":3,"id":"7a8ec9b2_0102ac6f","line":376,"in_reply_to":"7a8ec9b2_4e76a606","updated":"2016-09-19 12:54:42.000000000","message":"A lot of pain was experienced due to bug 1616282 which prompted the change here. I am including some of the folks involved to weigh in.","commit_id":"42b610c1a4c1b0f1ab17c40ccb48e4b83e1d96ef"},{"author":{"_account_id":6524,"name":"Henry Gessau","email":"HenryG@gessau.net","username":"gessau"},"change_message_id":"3ec1602f875b6da3460ba063811b5ade1dd069a9","unresolved":false,"context_lines":[{"line_number":92,"context_line":"die_if_not_set $LINENO default_v4_route_devs \"Failure retrieving default IPv4 route devices\""},{"line_number":93,"context_line":""},{"line_number":94,"context_line":"default_v6_route_devs\u003d$(ip -6 route | grep ^default | awk \u0027{print $5}\u0027)"},{"line_number":95,"context_line":"die_if_not_set $LINENO default_v6_route_devs \"Failure retrieving default IPv6 route devices\""},{"line_number":96,"context_line":""},{"line_number":97,"context_line":"function _determine_config_l3 {"},{"line_number":98,"context_line":"    local opts\u003d\"--config-file $NEUTRON_CONF --config-file $Q_L3_CONF_FILE\""}],"source_content_type":"application/x-shellscript","patch_set":4,"id":"7a8ec9b2_479204a1","line":95,"range":{"start_line":95,"start_character":0,"end_line":95,"end_character":14},"updated":"2016-09-19 13:09:00.000000000","message":"This may not be a good idea.","commit_id":"91cdeef48de69b5cdc88ef0b7ed70a834b7fbdfb"},{"author":{"_account_id":6524,"name":"Henry Gessau","email":"HenryG@gessau.net","username":"gessau"},"change_message_id":"9af54cce727c5d201197bd10e5cc79f79a6347be","unresolved":false,"context_lines":[{"line_number":92,"context_line":"die_if_not_set $LINENO default_v4_route_devs \"Failure retrieving default IPv4 route devices\""},{"line_number":93,"context_line":""},{"line_number":94,"context_line":"default_v6_route_devs\u003d$(ip -6 route | grep ^default | awk \u0027{print $5}\u0027)"},{"line_number":95,"context_line":"die_if_not_set $LINENO default_v6_route_devs \"Failure retrieving default IPv6 route devices\""},{"line_number":96,"context_line":""},{"line_number":97,"context_line":"function _determine_config_l3 {"},{"line_number":98,"context_line":"    local opts\u003d\"--config-file $NEUTRON_CONF --config-file $Q_L3_CONF_FILE\""}],"source_content_type":"application/x-shellscript","patch_set":4,"id":"7a8ec9b2_730df136","line":95,"range":{"start_line":95,"start_character":0,"end_line":95,"end_character":14},"in_reply_to":"7a8ec9b2_0109b6dd","updated":"2016-09-19 18:13:40.000000000","message":"Indeed, this failed on a host that did not have a v6 default route, which I suspect is unfortunately pretty common.","commit_id":"91cdeef48de69b5cdc88ef0b7ed70a834b7fbdfb"},{"author":{"_account_id":7448,"name":"Carl Baldwin","email":"carl@ecbaldwin.net","username":"carl-baldwin"},"change_message_id":"01d4f17821ba90275f375c1b85d2a2e980dd6299","unresolved":false,"context_lines":[{"line_number":92,"context_line":"die_if_not_set $LINENO default_v4_route_devs \"Failure retrieving default IPv4 route devices\""},{"line_number":93,"context_line":""},{"line_number":94,"context_line":"default_v6_route_devs\u003d$(ip -6 route | grep ^default | awk \u0027{print $5}\u0027)"},{"line_number":95,"context_line":"die_if_not_set $LINENO default_v6_route_devs \"Failure retrieving default IPv6 route devices\""},{"line_number":96,"context_line":""},{"line_number":97,"context_line":"function _determine_config_l3 {"},{"line_number":98,"context_line":"    local opts\u003d\"--config-file $NEUTRON_CONF --config-file $Q_L3_CONF_FILE\""}],"source_content_type":"application/x-shellscript","patch_set":4,"id":"7a8ec9b2_0109b6dd","line":95,"range":{"start_line":95,"start_character":0,"end_line":95,"end_character":14},"in_reply_to":"7a8ec9b2_479204a1","updated":"2016-09-19 18:03:51.000000000","message":"+1 Not a great idea. Eventually, I think we\u0027d want to require only one default route, of either kind. But, for now, continuing to require v4 and not v6 is probably the best.","commit_id":"91cdeef48de69b5cdc88ef0b7ed70a834b7fbdfb"},{"author":{"_account_id":7448,"name":"Carl Baldwin","email":"carl@ecbaldwin.net","username":"carl-baldwin"},"change_message_id":"33239f09290f7351610a288954f32273acb44528","unresolved":false,"context_lines":[{"line_number":88,"context_line":"SUBNETPOOL_SIZE_V4\u003d${SUBNETPOOL_SIZE_V4:-24}"},{"line_number":89,"context_line":"SUBNETPOOL_SIZE_V6\u003d${SUBNETPOOL_SIZE_V6:-64}"},{"line_number":90,"context_line":""},{"line_number":91,"context_line":"default_v4_route_devs\u003d$(ip route | grep ^default | awk \u0027{print $5}\u0027)"},{"line_number":92,"context_line":"die_if_not_set $LINENO default_v4_route_devs \"Failure retrieving default IPv4 route devices\""},{"line_number":93,"context_line":""},{"line_number":94,"context_line":"default_v6_route_devs\u003d$(ip -6 route | grep ^default | awk \u0027{print $5}\u0027)"}],"source_content_type":"application/x-shellscript","patch_set":6,"id":"7a8ec9b2_6601b039","line":91,"updated":"2016-09-19 18:04:57.000000000","message":"nit: maybe just for symmetry, add a -4 to this command.","commit_id":"6bf341783830c7303b431dbbaf7465f7a1dc08ea"},{"author":{"_account_id":748,"name":"Armando Migliaccio","email":"armamig@gmail.com","username":"armando-migliaccio"},"change_message_id":"5e1726c048cf36b3b9f7f1d38b91b0fc147e73d8","unresolved":false,"context_lines":[{"line_number":123,"context_line":"            _move_neutron_addresses_route \"$PUBLIC_INTERFACE\" \"$OVS_PHYSICAL_BRIDGE\" False False \"inet6\""},{"line_number":124,"context_line":"        fi"},{"line_number":125,"context_line":"    else"},{"line_number":126,"context_line":"        for d in $default_v4_route_devs; do"},{"line_number":127,"context_line":"            sudo iptables -t nat -A POSTROUTING -o $d -s $FLOATING_RANGE -j MASQUERADE"},{"line_number":128,"context_line":"        done"},{"line_number":129,"context_line":"    fi"}],"source_content_type":"application/x-shellscript","patch_set":7,"id":"7a8ec9b2_16c81074","line":126,"updated":"2016-09-20 00:38:45.000000000","message":"wouldn\u0027t this break on IPv6 only envs like the OSIC one in the gate?","commit_id":"734f144f5d47c9b76562d5b5c705428be0963aec"},{"author":{"_account_id":748,"name":"Armando Migliaccio","email":"armamig@gmail.com","username":"armando-migliaccio"},"change_message_id":"859c09d26e5872db51d34c2c8c31bed669ad0d6a","unresolved":false,"context_lines":[{"line_number":123,"context_line":"            _move_neutron_addresses_route \"$PUBLIC_INTERFACE\" \"$OVS_PHYSICAL_BRIDGE\" False False \"inet6\""},{"line_number":124,"context_line":"        fi"},{"line_number":125,"context_line":"    else"},{"line_number":126,"context_line":"        for d in $default_v4_route_devs; do"},{"line_number":127,"context_line":"            sudo iptables -t nat -A POSTROUTING -o $d -s $FLOATING_RANGE -j MASQUERADE"},{"line_number":128,"context_line":"        done"},{"line_number":129,"context_line":"    fi"}],"source_content_type":"application/x-shellscript","patch_set":7,"id":"7a8ec9b2_76ba34c2","line":126,"in_reply_to":"7a8ec9b2_16c81074","updated":"2016-09-20 00:43:57.000000000","message":"(facepalm): ignore me.","commit_id":"734f144f5d47c9b76562d5b5c705428be0963aec"}]}
