)]}'
{"doc/source/command-objects/security-group-rule.rst":[{"author":{"_account_id":17776,"name":"Reedip","email":"reedip.banerjee@gmail.com","username":"Reedip"},"change_message_id":"342f6a20230354b61c96a0bb20f6b617fb0578db","unresolved":false,"context_lines":[{"line_number":41,"context_line":"    Destination port, may be a single port or"},{"line_number":42,"context_line":"    a starting and ending port range: 137:139."},{"line_number":43,"context_line":"    Required for IP protocols tcp and udp."},{"line_number":44,"context_line":"    For IP protocols icmp, icmpv6 and ipv6-icmp,"},{"line_number":45,"context_line":"    this is type and code."},{"line_number":46,"context_line":""},{"line_number":47,"context_line":"    *Network version 2*"}],"source_content_type":"text/x-rst","patch_set":2,"id":"1a122d0e_d33d6bde","line":44,"range":{"start_line":44,"start_character":28,"end_line":44,"end_character":47},"updated":"2016-04-20 03:42:23.000000000","message":"Is there a difference in ICMPv6 and IPv6 ICMP?\nNova security group rule has icmp, tcp and udp, while neutron has ICMP, ICMPv6, TCP and UDP\n\nAlso, we can refer this : https://github.com/openstack/neutron-lib/blob/24052ed07961ae3cdb44d5c3c789ece7cdbdb5dd/neutron_lib/constants.py#L117\n\n\nAs per /etc/protocols\n\n # Internet (IP) protocols\n #\n # Updated from http://www.iana.org/assignments/protocol- numbers and other\n # sources.\n # New protocols will be added on request if they have been  officially\n # assigned by IANA and are not historical.\n # If you need a huge list of used numbers please install  the nmap package.\n\n ip      0       IP              # internet protocol, pseudo protocol number\n icmp    1       ICMP            # internet control message protocol\n tcp     6       TCP             # transmission control protocol\n udp     17      UDP             # user datagram protocol\n ipv6    41      IPv6            # Internet Protocol, version 6\n ipv6-icmp 58    IPv6-ICMP       # ICMP for IPv6","commit_id":"339cc52146bfdfcb6068ea2694369353d384afcf"},{"author":{"_account_id":17776,"name":"Reedip","email":"reedip.banerjee@gmail.com","username":"Reedip"},"change_message_id":"e037b24302d7e811d53579a54a9ec15b2b0f4387","unresolved":false,"context_lines":[{"line_number":41,"context_line":"    Destination port, may be a single port or"},{"line_number":42,"context_line":"    a starting and ending port range: 137:139."},{"line_number":43,"context_line":"    Required for IP protocols tcp and udp."},{"line_number":44,"context_line":"    For IP protocols icmp, icmpv6 and ipv6-icmp,"},{"line_number":45,"context_line":"    this is type and code."},{"line_number":46,"context_line":""},{"line_number":47,"context_line":"    *Network version 2*"}],"source_content_type":"text/x-rst","patch_set":2,"id":"1a122d0e_fc1e6f6e","line":44,"range":{"start_line":44,"start_character":28,"end_line":44,"end_character":47},"in_reply_to":"1a122d0e_d33d6bde","updated":"2016-04-20 07:31:07.000000000","message":"And ofcourse, this: https://review.openstack.org/#/c/294853/","commit_id":"339cc52146bfdfcb6068ea2694369353d384afcf"},{"author":{"_account_id":8410,"name":"Richard Theis","email":"rtheis@us.ibm.com","username":"rtheis"},"change_message_id":"7e903f1942cdc16be227eef33813621dc6f859bd","unresolved":false,"context_lines":[{"line_number":41,"context_line":"    Destination port, may be a single port or"},{"line_number":42,"context_line":"    a starting and ending port range: 137:139."},{"line_number":43,"context_line":"    Required for IP protocols tcp and udp."},{"line_number":44,"context_line":"    For IP protocols icmp, icmpv6 and ipv6-icmp,"},{"line_number":45,"context_line":"    this is type and code."},{"line_number":46,"context_line":""},{"line_number":47,"context_line":"    *Network version 2*"}],"source_content_type":"text/x-rst","patch_set":2,"id":"1a122d0e_e00a3025","line":44,"range":{"start_line":44,"start_character":28,"end_line":44,"end_character":47},"in_reply_to":"1a122d0e_fc1e6f6e","updated":"2016-04-20 13:55:15.000000000","message":"There isn\u0027t a difference between icmpv6 and ipv6-icmp.  Since icmpv6 is deprecated in neutorn, I\u0027ll remove it.  Thanks for catching this.","commit_id":"339cc52146bfdfcb6068ea2694369353d384afcf"},{"author":{"_account_id":17776,"name":"Reedip","email":"reedip.banerjee@gmail.com","username":"Reedip"},"change_message_id":"342f6a20230354b61c96a0bb20f6b617fb0578db","unresolved":false,"context_lines":[{"line_number":71,"context_line":"    IP protocol (ah, dccp, egp, esp, gre, icmp, igmp,"},{"line_number":72,"context_line":"    icmpv6, ipv6-encap, ipv6-frag, ipv6-icmp, ipv6-nonxt,"},{"line_number":73,"context_line":"    ipv6-opts, ipv6-route, ospf, pgm, rsvp, sctp, tcp,"},{"line_number":74,"context_line":"    udp, udplite, vrrp and integer representations [0-255];"},{"line_number":75,"context_line":"    default: tcp)"},{"line_number":76,"context_line":""},{"line_number":77,"context_line":"    *Network version 2*"}],"source_content_type":"text/x-rst","patch_set":2,"id":"1a122d0e_46b99b14","line":74,"updated":"2016-04-20 03:42:23.000000000","message":"Lets limit it to TCP, UDP, ICMP and some other common protocols instead of such a long list. most of these are not used and those who use it would already know the numerical representation.","commit_id":"339cc52146bfdfcb6068ea2694369353d384afcf"},{"author":{"_account_id":8410,"name":"Richard Theis","email":"rtheis@us.ibm.com","username":"rtheis"},"change_message_id":"7e903f1942cdc16be227eef33813621dc6f859bd","unresolved":false,"context_lines":[{"line_number":71,"context_line":"    IP protocol (ah, dccp, egp, esp, gre, icmp, igmp,"},{"line_number":72,"context_line":"    icmpv6, ipv6-encap, ipv6-frag, ipv6-icmp, ipv6-nonxt,"},{"line_number":73,"context_line":"    ipv6-opts, ipv6-route, ospf, pgm, rsvp, sctp, tcp,"},{"line_number":74,"context_line":"    udp, udplite, vrrp and integer representations [0-255];"},{"line_number":75,"context_line":"    default: tcp)"},{"line_number":76,"context_line":""},{"line_number":77,"context_line":"    *Network version 2*"}],"source_content_type":"text/x-rst","patch_set":2,"id":"1a122d0e_94857d5b","line":74,"in_reply_to":"1a122d0e_46b99b14","updated":"2016-04-20 13:55:15.000000000","message":"This is just documentation and the code passes them through to the API as-is.  So even if we don\u0027t document them all, they will still work.  I would prefer to keep this list accurate.","commit_id":"339cc52146bfdfcb6068ea2694369353d384afcf"},{"author":{"_account_id":17776,"name":"Reedip","email":"reedip.banerjee@gmail.com","username":"Reedip"},"change_message_id":"342f6a20230354b61c96a0bb20f6b617fb0578db","unresolved":false,"context_lines":[{"line_number":91,"context_line":".. option:: --ethertype \u003cethertype\u003e"},{"line_number":92,"context_line":""},{"line_number":93,"context_line":"    Ethertype of network traffic"},{"line_number":94,"context_line":"    (IPv4, IPv6; default: based on IP protocol)"},{"line_number":95,"context_line":""},{"line_number":96,"context_line":"    *Network version 2 only*"},{"line_number":97,"context_line":""}],"source_content_type":"text/x-rst","patch_set":2,"id":"1a122d0e_c685abcf","line":94,"updated":"2016-04-20 03:42:23.000000000","message":"Also, I am wondering about this https://bugs.launchpad.net/neutron/+bug/1532061/comments/7","commit_id":"339cc52146bfdfcb6068ea2694369353d384afcf"},{"author":{"_account_id":8410,"name":"Richard Theis","email":"rtheis@us.ibm.com","username":"rtheis"},"change_message_id":"7e903f1942cdc16be227eef33813621dc6f859bd","unresolved":false,"context_lines":[{"line_number":91,"context_line":".. option:: --ethertype \u003cethertype\u003e"},{"line_number":92,"context_line":""},{"line_number":93,"context_line":"    Ethertype of network traffic"},{"line_number":94,"context_line":"    (IPv4, IPv6; default: based on IP protocol)"},{"line_number":95,"context_line":""},{"line_number":96,"context_line":"    *Network version 2 only*"},{"line_number":97,"context_line":""}],"source_content_type":"text/x-rst","patch_set":2,"id":"1a122d0e_d77b7779","line":94,"in_reply_to":"1a122d0e_c685abcf","updated":"2016-04-20 13:55:15.000000000","message":"Neutron will validate that the IPv6 protocols use an IPv6 ethertype.  For example, \"openstack security group rule create --protocol icmpv6 --ethertype IPv4 foo\" will fail with \"Invalid ethertype IPv4 for protocol icmpv6.\" from the neutron API.  Does this address your concern?","commit_id":"339cc52146bfdfcb6068ea2694369353d384afcf"},{"author":{"_account_id":970,"name":"Dean Troyer","email":"dtroyer@gmail.com","username":"dtroyer"},"change_message_id":"0d200a7752ed969bfc7a9e3b2d535fcf3becb485","unresolved":false,"context_lines":[{"line_number":14,"context_line":""},{"line_number":15,"context_line":"    os security group rule create"},{"line_number":16,"context_line":"        [--src-ip \u003cip-address\u003e | --src-group \u003cgroup\u003e]"},{"line_number":17,"context_line":"        [--dst-port \u003cport-range\u003e | [--port-range-min \u003cport-range-min\u003e] [--port-range-max \u003cport-range-max\u003e]]"},{"line_number":18,"context_line":"        [--protocol \u003cprotocol\u003e]"},{"line_number":19,"context_line":"        [--ingress | --egress]"},{"line_number":20,"context_line":"        [--ethertype \u003cethertype\u003e]"}],"source_content_type":"text/x-rst","patch_set":3,"id":"dab17558_2a52ea13","line":17,"updated":"2016-05-06 17:57:54.000000000","message":"How are --port-range-min/max different from --dst-port?  Do these apply to source, destination or both?  And why do we need two options rather than a single one that handles a range?","commit_id":"d79300fc7be178d9a912e7b66ac56200fa6dc5bf"},{"author":{"_account_id":8410,"name":"Richard Theis","email":"rtheis@us.ibm.com","username":"rtheis"},"change_message_id":"7b0a9feb80d04e405c591a1243848910b04e456b","unresolved":false,"context_lines":[{"line_number":14,"context_line":""},{"line_number":15,"context_line":"    os security group rule create"},{"line_number":16,"context_line":"        [--src-ip \u003cip-address\u003e | --src-group \u003cgroup\u003e]"},{"line_number":17,"context_line":"        [--dst-port \u003cport-range\u003e | [--port-range-min \u003cport-range-min\u003e] [--port-range-max \u003cport-range-max\u003e]]"},{"line_number":18,"context_line":"        [--protocol \u003cprotocol\u003e]"},{"line_number":19,"context_line":"        [--ingress | --egress]"},{"line_number":20,"context_line":"        [--ethertype \u003cethertype\u003e]"}],"source_content_type":"text/x-rst","patch_set":3,"id":"dab17558_6e384aa1","line":17,"in_reply_to":"dab17558_1b4019a5","updated":"2016-05-09 16:11:35.000000000","message":"Hi Dean, I studied the neutron code further.  Neutron uses port_range_min and port_range_max for the destination port.  Internally neutron supports using source_port_range_min and source_port_range_max but they aren\u0027t exposed on the API.  So continuing to use --dst-port makes sense.  Also, adding the --icmp-* options removes the problems that I was having with ICMP protocols.","commit_id":"d79300fc7be178d9a912e7b66ac56200fa6dc5bf"},{"author":{"_account_id":8410,"name":"Richard Theis","email":"rtheis@us.ibm.com","username":"rtheis"},"change_message_id":"486a7570890b4426d75d1d94b40949b4b9bc22d0","unresolved":false,"context_lines":[{"line_number":14,"context_line":""},{"line_number":15,"context_line":"    os security group rule create"},{"line_number":16,"context_line":"        [--src-ip \u003cip-address\u003e | --src-group \u003cgroup\u003e]"},{"line_number":17,"context_line":"        [--dst-port \u003cport-range\u003e | [--port-range-min \u003cport-range-min\u003e] [--port-range-max \u003cport-range-max\u003e]]"},{"line_number":18,"context_line":"        [--protocol \u003cprotocol\u003e]"},{"line_number":19,"context_line":"        [--ingress | --egress]"},{"line_number":20,"context_line":"        [--ethertype \u003cethertype\u003e]"}],"source_content_type":"text/x-rst","patch_set":3,"id":"dab17558_1b4019a5","line":17,"in_reply_to":"dab17558_2a52ea13","updated":"2016-05-06 19:54:30.000000000","message":"Neutron allows min and/or max to be set.  But --dst-port doesn\u0027t allow only min or max to be set without adding special parsing logic. I\u0027ll have to check of the functional differences when specifying only min or max.\n\nThe ports apply to source or destination based on --ingress or --egress rule being created.  Since nova only creates --ingress rules, using dst in option name makes sense.\n\nShould Network v2 support but hide --dst-port option in favor of a --port-range option?","commit_id":"d79300fc7be178d9a912e7b66ac56200fa6dc5bf"},{"author":{"_account_id":970,"name":"Dean Troyer","email":"dtroyer@gmail.com","username":"dtroyer"},"change_message_id":"0d200a7752ed969bfc7a9e3b2d535fcf3becb485","unresolved":false,"context_lines":[{"line_number":49,"context_line":""},{"line_number":50,"context_line":"    Starting port in the port range. Required for"},{"line_number":51,"context_line":"    IP protocols tcp and udp. For ICMP IP protocols,"},{"line_number":52,"context_line":"    this is type."},{"line_number":53,"context_line":""},{"line_number":54,"context_line":"    *Network version 2 only*"},{"line_number":55,"context_line":""}],"source_content_type":"text/x-rst","patch_set":3,"id":"dab17558_caafdee1","line":52,"updated":"2016-05-06 17:57:54.000000000","message":"Let\u0027s do --icmp-type instead?","commit_id":"d79300fc7be178d9a912e7b66ac56200fa6dc5bf"},{"author":{"_account_id":8410,"name":"Richard Theis","email":"rtheis@us.ibm.com","username":"rtheis"},"change_message_id":"486a7570890b4426d75d1d94b40949b4b9bc22d0","unresolved":false,"context_lines":[{"line_number":49,"context_line":""},{"line_number":50,"context_line":"    Starting port in the port range. Required for"},{"line_number":51,"context_line":"    IP protocols tcp and udp. For ICMP IP protocols,"},{"line_number":52,"context_line":"    this is type."},{"line_number":53,"context_line":""},{"line_number":54,"context_line":"    *Network version 2 only*"},{"line_number":55,"context_line":""}],"source_content_type":"text/x-rst","patch_set":3,"id":"dab17558_3b607dce","line":52,"in_reply_to":"dab17558_caafdee1","updated":"2016-05-06 19:54:30.000000000","message":"Will do","commit_id":"d79300fc7be178d9a912e7b66ac56200fa6dc5bf"},{"author":{"_account_id":970,"name":"Dean Troyer","email":"dtroyer@gmail.com","username":"dtroyer"},"change_message_id":"0d200a7752ed969bfc7a9e3b2d535fcf3becb485","unresolved":false,"context_lines":[{"line_number":57,"context_line":""},{"line_number":58,"context_line":"    Ending port in the port range. Required for"},{"line_number":59,"context_line":"    IP protocols tcp and udp. For ICMP IP protocols,"},{"line_number":60,"context_line":"    this is code."},{"line_number":61,"context_line":""},{"line_number":62,"context_line":"    *Network version 2 only*"},{"line_number":63,"context_line":""}],"source_content_type":"text/x-rst","patch_set":3,"id":"dab17558_eab6223c","line":60,"updated":"2016-05-06 17:57:54.000000000","message":"Let\u0027s do --icmp-code instead?","commit_id":"d79300fc7be178d9a912e7b66ac56200fa6dc5bf"},{"author":{"_account_id":8410,"name":"Richard Theis","email":"rtheis@us.ibm.com","username":"rtheis"},"change_message_id":"486a7570890b4426d75d1d94b40949b4b9bc22d0","unresolved":false,"context_lines":[{"line_number":57,"context_line":""},{"line_number":58,"context_line":"    Ending port in the port range. Required for"},{"line_number":59,"context_line":"    IP protocols tcp and udp. For ICMP IP protocols,"},{"line_number":60,"context_line":"    this is code."},{"line_number":61,"context_line":""},{"line_number":62,"context_line":"    *Network version 2 only*"},{"line_number":63,"context_line":""}],"source_content_type":"text/x-rst","patch_set":3,"id":"dab17558_7ba045f5","line":60,"in_reply_to":"dab17558_eab6223c","updated":"2016-05-06 19:54:30.000000000","message":"Will do","commit_id":"d79300fc7be178d9a912e7b66ac56200fa6dc5bf"},{"author":{"_account_id":6482,"name":"Steve Martinelli","email":"s.martinelli@gmail.com","username":"stevemar"},"change_message_id":"844ba695d4cb4b53f96cc7c1f5a3c346e6444ff7","unresolved":false,"context_lines":[{"line_number":35,"context_line":""},{"line_number":36,"context_line":".. option:: --dst-port \u003cport-range\u003e"},{"line_number":37,"context_line":""},{"line_number":38,"context_line":"    Destination port, may be a single port or"},{"line_number":39,"context_line":"    a starting and ending port range: 137:139."},{"line_number":40,"context_line":"    Required for IP protocols tcp and udp."},{"line_number":41,"context_line":"    Ignored for ICMP IP protocols."}],"source_content_type":"text/x-rst","patch_set":5,"id":"dab17558_c25730c8","line":38,"range":{"start_line":38,"start_character":4,"end_line":38,"end_character":45},"updated":"2016-05-11 06:09:11.000000000","message":"use all 72 characters in this block","commit_id":"b725b447f5b05c8561f6edef6fa2422cce63d3da"},{"author":{"_account_id":8410,"name":"Richard Theis","email":"rtheis@us.ibm.com","username":"rtheis"},"change_message_id":"d58b1d856d4f99c3c70e8927ebce97d20d9c8c2b","unresolved":false,"context_lines":[{"line_number":35,"context_line":""},{"line_number":36,"context_line":".. option:: --dst-port \u003cport-range\u003e"},{"line_number":37,"context_line":""},{"line_number":38,"context_line":"    Destination port, may be a single port or"},{"line_number":39,"context_line":"    a starting and ending port range: 137:139."},{"line_number":40,"context_line":"    Required for IP protocols tcp and udp."},{"line_number":41,"context_line":"    Ignored for ICMP IP protocols."}],"source_content_type":"text/x-rst","patch_set":5,"id":"dab17558_16884c70","line":38,"range":{"start_line":38,"start_character":4,"end_line":38,"end_character":45},"in_reply_to":"dab17558_c25730c8","updated":"2016-05-11 12:50:47.000000000","message":"Done","commit_id":"b725b447f5b05c8561f6edef6fa2422cce63d3da"},{"author":{"_account_id":6482,"name":"Steve Martinelli","email":"s.martinelli@gmail.com","username":"stevemar"},"change_message_id":"844ba695d4cb4b53f96cc7c1f5a3c346e6444ff7","unresolved":false,"context_lines":[{"line_number":37,"context_line":""},{"line_number":38,"context_line":"    Destination port, may be a single port or"},{"line_number":39,"context_line":"    a starting and ending port range: 137:139."},{"line_number":40,"context_line":"    Required for IP protocols tcp and udp."},{"line_number":41,"context_line":"    Ignored for ICMP IP protocols."},{"line_number":42,"context_line":""},{"line_number":43,"context_line":".. option:: --icmp-type \u003cicmp-type\u003e"}],"source_content_type":"text/x-rst","patch_set":5,"id":"dab17558_2250bcd3","line":40,"range":{"start_line":40,"start_character":30,"end_line":40,"end_character":41},"updated":"2016-05-11 06:09:11.000000000","message":"TCP and UDP (caps)","commit_id":"b725b447f5b05c8561f6edef6fa2422cce63d3da"},{"author":{"_account_id":8410,"name":"Richard Theis","email":"rtheis@us.ibm.com","username":"rtheis"},"change_message_id":"d58b1d856d4f99c3c70e8927ebce97d20d9c8c2b","unresolved":false,"context_lines":[{"line_number":37,"context_line":""},{"line_number":38,"context_line":"    Destination port, may be a single port or"},{"line_number":39,"context_line":"    a starting and ending port range: 137:139."},{"line_number":40,"context_line":"    Required for IP protocols tcp and udp."},{"line_number":41,"context_line":"    Ignored for ICMP IP protocols."},{"line_number":42,"context_line":""},{"line_number":43,"context_line":".. option:: --icmp-type \u003cicmp-type\u003e"}],"source_content_type":"text/x-rst","patch_set":5,"id":"dab17558_767b987b","line":40,"range":{"start_line":40,"start_character":30,"end_line":40,"end_character":41},"in_reply_to":"dab17558_2250bcd3","updated":"2016-05-11 12:50:47.000000000","message":"Done","commit_id":"b725b447f5b05c8561f6edef6fa2422cce63d3da"}],"openstackclient/network/v2/security_group_rule.py":[{"author":{"_account_id":14937,"name":"Tang Chen","email":"imtangchen@163.com","username":"tangchen"},"change_message_id":"aafc9812ce8949940f948a9b4109860112587591","unresolved":false,"context_lines":[{"line_number":38,"context_line":"def _format_network_port_range(rule):"},{"line_number":39,"context_line":"    port_range \u003d \u0027\u0027"},{"line_number":40,"context_line":"    # Display port range or ICMP type and code."},{"line_number":41,"context_line":"    if rule.port_range_min or rule.port_range_max:"},{"line_number":42,"context_line":"        port_range_min \u003d str(rule.port_range_min)"},{"line_number":43,"context_line":"        port_range_max \u003d str(rule.port_range_max)"},{"line_number":44,"context_line":"        port_range \u003d port_range_min + \u0027:\u0027 + port_range_max"},{"line_number":45,"context_line":"    return port_range"},{"line_number":46,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"dab17558_bfa91927","line":43,"range":{"start_line":41,"start_character":0,"end_line":43,"end_character":49},"updated":"2016-05-12 11:53:12.000000000","message":"But what if one of them is None ? Maybe it is impossible, I\u0027m not sure.","commit_id":"4f980f9000ad2af0ec9915a05d578ebc9dfe8359"},{"author":{"_account_id":17776,"name":"Reedip","email":"reedip.banerjee@gmail.com","username":"Reedip"},"change_message_id":"5bc9a587020ef7b43fd3052e0acac23d87ebceaa","unresolved":false,"context_lines":[{"line_number":38,"context_line":"def _format_network_port_range(rule):"},{"line_number":39,"context_line":"    port_range \u003d \u0027\u0027"},{"line_number":40,"context_line":"    # Display port range or ICMP type and code."},{"line_number":41,"context_line":"    if rule.port_range_min or rule.port_range_max:"},{"line_number":42,"context_line":"        port_range_min \u003d str(rule.port_range_min)"},{"line_number":43,"context_line":"        port_range_max \u003d str(rule.port_range_max)"},{"line_number":44,"context_line":"        port_range \u003d port_range_min + \u0027:\u0027 + port_range_max"},{"line_number":45,"context_line":"    return port_range"},{"line_number":46,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"dab17558_acc8a375","line":43,"range":{"start_line":41,"start_character":0,"end_line":43,"end_character":49},"in_reply_to":"dab17558_a40d6539","updated":"2016-05-13 08:29:24.000000000","message":"Agree with Tang on this one","commit_id":"4f980f9000ad2af0ec9915a05d578ebc9dfe8359"},{"author":{"_account_id":8410,"name":"Richard Theis","email":"rtheis@us.ibm.com","username":"rtheis"},"change_message_id":"1bfd87a2c6239d1f339d75b32277490c9da83ccf","unresolved":false,"context_lines":[{"line_number":38,"context_line":"def _format_network_port_range(rule):"},{"line_number":39,"context_line":"    port_range \u003d \u0027\u0027"},{"line_number":40,"context_line":"    # Display port range or ICMP type and code."},{"line_number":41,"context_line":"    if rule.port_range_min or rule.port_range_max:"},{"line_number":42,"context_line":"        port_range_min \u003d str(rule.port_range_min)"},{"line_number":43,"context_line":"        port_range_max \u003d str(rule.port_range_max)"},{"line_number":44,"context_line":"        port_range \u003d port_range_min + \u0027:\u0027 + port_range_max"},{"line_number":45,"context_line":"    return port_range"},{"line_number":46,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"dab17558_a7bfecfa","line":43,"range":{"start_line":41,"start_character":0,"end_line":43,"end_character":49},"in_reply_to":"dab17558_acc8a375","updated":"2016-05-14 12:54:56.000000000","message":"Done","commit_id":"4f980f9000ad2af0ec9915a05d578ebc9dfe8359"},{"author":{"_account_id":8410,"name":"Richard Theis","email":"rtheis@us.ibm.com","username":"rtheis"},"change_message_id":"3e140976e335ecd10a033763707218489ac8b4bc","unresolved":false,"context_lines":[{"line_number":38,"context_line":"def _format_network_port_range(rule):"},{"line_number":39,"context_line":"    port_range \u003d \u0027\u0027"},{"line_number":40,"context_line":"    # Display port range or ICMP type and code."},{"line_number":41,"context_line":"    if rule.port_range_min or rule.port_range_max:"},{"line_number":42,"context_line":"        port_range_min \u003d str(rule.port_range_min)"},{"line_number":43,"context_line":"        port_range_max \u003d str(rule.port_range_max)"},{"line_number":44,"context_line":"        port_range \u003d port_range_min + \u0027:\u0027 + port_range_max"},{"line_number":45,"context_line":"    return port_range"},{"line_number":46,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"dab17558_c1723749","line":43,"range":{"start_line":41,"start_character":0,"end_line":43,"end_character":49},"in_reply_to":"dab17558_bfa91927","updated":"2016-05-12 14:39:04.000000000","message":"It is possible.  In such cases, \"None\" will be printed so it would look like \"80:None\" or \"None:80\".","commit_id":"4f980f9000ad2af0ec9915a05d578ebc9dfe8359"},{"author":{"_account_id":14937,"name":"Tang Chen","email":"imtangchen@163.com","username":"tangchen"},"change_message_id":"5673374c8a71dc64daf8a25395207dac31c6499d","unresolved":false,"context_lines":[{"line_number":38,"context_line":"def _format_network_port_range(rule):"},{"line_number":39,"context_line":"    port_range \u003d \u0027\u0027"},{"line_number":40,"context_line":"    # Display port range or ICMP type and code."},{"line_number":41,"context_line":"    if rule.port_range_min or rule.port_range_max:"},{"line_number":42,"context_line":"        port_range_min \u003d str(rule.port_range_min)"},{"line_number":43,"context_line":"        port_range_max \u003d str(rule.port_range_max)"},{"line_number":44,"context_line":"        port_range \u003d port_range_min + \u0027:\u0027 + port_range_max"},{"line_number":45,"context_line":"    return port_range"},{"line_number":46,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"dab17558_a40d6539","line":43,"range":{"start_line":41,"start_character":0,"end_line":43,"end_character":49},"in_reply_to":"dab17558_c1723749","updated":"2016-05-13 02:58:14.000000000","message":"Well, if so, I would prefer we print it as 80:80, which is like the origin code. None seems like unlimited, but actually it is limited, right ?","commit_id":"4f980f9000ad2af0ec9915a05d578ebc9dfe8359"}]}
