On Tue, 30 Sep 2014 11:01:01 +0900
Yusuke Iwase <[email protected]> wrote:

> 
> Signed-off-by: IWASE Yusuke <[email protected]>
> ---
>  doc/source/app.rst            |    1 +
>  doc/source/app/ofctl_rest.rst | 1392 
> +++++++++++++++++++++++++++++++++++++++++
>  2 files changed, 1393 insertions(+)
>  create mode 100644 doc/source/app/ofctl_rest.rst

Great, thanks a lot!

> diff --git a/doc/source/app.rst b/doc/source/app.rst
> index c20b0bf..077c890 100644
> --- a/doc/source/app.rst
> +++ b/doc/source/app.rst
> @@ -10,3 +10,4 @@ Others provide some functionalities to other Ryu 
> applications.
>     :maxdepth: 1
>  
>     app/ofctl.rst
> +   app/ofctl_rest.rst
> diff --git a/doc/source/app/ofctl_rest.rst b/doc/source/app/ofctl_rest.rst
> new file mode 100644
> index 0000000..dc18f40
> --- /dev/null
> +++ b/doc/source/app/ofctl_rest.rst
> @@ -0,0 +1,1392 @@
> +******************
> +ryu.app.ofctl_rest
> +******************
> +
> +ryu.app.ofctl_rest provides REST APIs for retrieving the switch stats
> +and Updating the switch stats.
> +This application helps you debug your application and get various statistics.
> +
> +This application supports OpenFlow version 1.0, 1.2 and 1.3.
> +
> +
> +Retrieve the switch stats
> +=========================
> +
> +Get all switches
> +----------------
> +
> +    Get the list of all switches which connected to the controller.
> +
> +    Usage:
> +
> +        ======= ================
> +        Method  GET
> +        URI     /stats/switches
> +        ======= ================
> +
> +    Response message body:
> +
> +        ========== =================== ========
> +        Attribute  Description         Example
> +        ========== =================== ========
> +        dpid       Datapath ID         1
> +        ========== =================== ========
> +
> +    Example of use::
> +
> +        $ curl -X GET http://localhost:8080/stats/switches
> +
> +    ::
> +
> +        [
> +          1,
> +          2,
> +          3
> +        ]
> +
> +    .. NOTE::
> +
> +       The result of the REST command is formatted for easy viewing.
> +
> +
> +Get the desc stats
> +------------------
> +
> +    Get the desc stats of the switch which specified with Datapath ID in URI.
> +
> +    Usage:
> +
> +        ======= ===================
> +        Method  GET
> +        URI     /stats/desc/<dpid>
> +        ======= ===================
> +
> +    Response message body:
> +
> +        =========== ======================================= ================
> +        Attribute   Description                             Example
> +        =========== ======================================= ================
> +        dpid        Datapath ID                             "1"
> +        mfr_desc    Manufacturer description                "Nicira, Inc.",
> +        hw_desc     Hardware description                    "Open vSwitch",
> +        sw_desc     Software description                    "2.3.90",
> +        serial_num  Serial number                           "None",
> +        dp_desc     Human readable description of datapath  "None"
> +        =========== ======================================= ================
> +
> +    Example of use::
> +
> +        $ curl -X GET http://localhost:8080/stats/desc/1
> +
> +    ::
> +
> +        {
> +          "1": {
> +            "mfr_desc": "Nicira, Inc.",
> +            "hw_desc": "Open vSwitch",
> +            "sw_desc": "2.3.90",
> +            "serial_num": "None",
> +            "dp_desc": "None"
> +          }
> +        }
> +
> +
> +.. _get-all-flows-stats:
> +
> +Get all flows stats
> +-------------------
> +
> +    Get all flows stats of the switch which specified with Datapath ID in 
> URI.
> +
> +    Usage:
> +
> +        ======= ===================
> +        Method  GET
> +        URI     /stats/flow/<dpid>
> +        ======= ===================
> +
> +    Response message body:
> +
> +        ============== ========================================= 
> ===============
> +        Attribute      Description                               Example
> +        ============== ========================================= 
> ===============
> +        dpid           Datapath ID                               "1"
> +        length         Length of this entry                      88
> +        table_id       Table ID                                  0
> +        duration_sec   Time flow has been alive in seconds       2
> +        duration_nsec  Time flow has been alive in nanoseconds   6.76e+08
> +        priority       Priority of the entry                     11111
> +        idle_timeout   Number of seconds idle before expiration  0
> +        hard_timeout   Number of seconds before expiration       0
> +        flags          Bitmap of OFPFF_* flags                   1
> +        cookie         Opaque controller-issued identifier       1
> +        packet_count   Number of packets in flow                 0
> +        byte_count     Number of bytes in flow                   0
> +        match          Fields to match                           {"in_port": 
> 1}
> +        actions        Instruction set                           ["OUTPUT:2"]
> +        ============== ========================================= 
> ===============
> +
> +    Example of use::
> +
> +        $ curl -X GET http://localhost:8080/stats/flow/1
> +
> +    ::
> +
> +        {
> +          "1": [
> +            {
> +              "length": 88,
> +              "table_id": 0,
> +              "duration_sec": 2,
> +              "duration_nsec": 6.76e+08,
> +              "priority": 11111,
> +              "idle_timeout": 0,
> +              "hard_timeout": 0,
> +              "flags": 1,
> +              "cookie": 1,
> +              "packet_count": 0,
> +              "byte_count": 0,
> +              "match": {
> +                "in_port": 1
> +              },
> +              "actions": [
> +                "OUTPUT:2"
> +              ]
> +            }
> +          ]
> +        }
> +
> +
> +.. _get-flows-stats-filtered:
> +
> +Get flows stats filtered by fields
> +----------------------------------
> +
> +    Get flows stats of the switch filtered by the OFPFlowStats fields.
> +    This is POST method version of :ref:`get-all-flows-stats`.
> +
> +    Usage:
> +
> +        ======= ===================
> +        Method  POST
> +        URI     /stats/flow/<dpid>
> +        ======= ===================
> +
> +    Request message body:
> +
> +        ============ 
> ================================================================== 
> =============== ===============
> +        Attribute    Description                                             
>            Example         Default
> +        ============ 
> ================================================================== 
> =============== ===============
> +        table_id     Table ID (int)                                          
>            0               OFPTT_ALL
> +        out_port     Require matching entries to include this as an output 
> port (int)   2               OFPP_ANY
> +        out_group    Require matching entries to include this as an output 
> group (int)  1               OFPG_ANY
> +        cookie       Require matching entries to contain this cookie value 
> (int)        1               0
> +        cookie_mask  Mask used to restrict the cookie bits that must match 
> (int)        1               0
> +        match        Fields to match (dict)                                  
>            {"in_port": 1}  {} #wildcarded
> +        ============ 
> ================================================================== 
> =============== ===============
> +
> +    Response message body:
> +        The same as :ref:`get-all-flows-stats`
> +
> +    Example of use::
> +
> +        $ curl -X POST -d '{ \
> +             "table_id": 0, \
> +             "out_port": 2, \
> +             "cookie": 1, \
> +             "cookie_mask": 1, \
> +             "match":{ \
> +                 "in_port":1 \
> +             } \
> +         }' \
> +         http://localhost:8080/stats/flow/1
> +
> +    ::
> +
> +        {
> +          "1": [
> +            {
> +              "table_id": 0,
> +              "duration_sec": 2,
> +              "duration_nsec": 6.76e+08,
> +              "priority": 11111,
> +              "idle_timeout": 0,
> +              "hard_timeout": 0,
> +              "cookie": 1,
> +              "packet_count": 0,
> +              "byte_count": 0,
> +              "match": {
> +                "in_port": 1
> +              },
> +              "actions": [
> +                "OUTPUT:2"
> +              ]
> +            }
> +          ]
> +        }
> +
> +
> +Get ports stats
> +---------------
> +
> +    Get ports stats of the switch which specified with Datapath ID in URI.
> +
> +    Usage:
> +
> +        ======= ===================
> +        Method  GET
> +        URI     /stats/port/<dpid>
> +        ======= ===================
> +
> +    Response message body:
> +
> +        ============== ======================================== =========
> +        Attribute      Description                              Example
> +        ============== ======================================== =========
> +        dpid           Datapath ID                              "1"
> +        port_no        Port number                              1
> +        rx_packets     Number of received packets               9
> +        tx_packets     Number of transmitted packets            6
> +        rx_bytes       Number of received bytes                 738
> +        tx_bytes       Number of transmitted bytes              252
> +        rx_dropped     Number of packets dropped by RX          0
> +        tx_dropped     Number of packets dropped by TX          0
> +        rx_errors      Number of receive errors                 0
> +        tx_errors      Number of transmit errors                0
> +        rx_frame_err   Number of frame alignment errors         0
> +        rx_over_err    Number of packets with RX overrun        0
> +        rx_crc_err     Number of CRC errors                     0
> +        collisions     Number of collisions                     0
> +        duration_sec   Time port has been alive in seconds      12
> +        duration_nsec  Time port has been alive in nanoseconds  9.76e+08
> +        ============== ======================================== =========
> +
> +    Example of use::
> +
> +        $ curl -X GET http://localhost:8080/stats/port/1
> +
> +    ::
> +
> +        {
> +          "1": [
> +            {
> +              "port_no": 1,
> +              "rx_packets": 9,
> +              "tx_packets": 6,
> +              "rx_bytes": 738,
> +              "tx_bytes": 252,
> +              "rx_dropped": 0,
> +              "tx_dropped": 0,
> +              "rx_errors": 0,
> +              "tx_errors": 0,
> +              "rx_frame_err": 0,
> +              "rx_over_err": 0,
> +              "rx_crc_err": 0,
> +              "collisions": 0,
> +              "duration_sec": 12,
> +              "duration_nsec": 9.76e+08
> +            },
> +            {
> +              :
> +              :
> +            }
> +          ]
> +        }
> +
> +
> +.. _get-ports-description:
> +
> +Get ports description
> +---------------------
> +
> +    Get ports description of the switch which specified with Datapath ID in 
> URI.
> +
> +    Usage:
> +
> +        ======= =======================
> +        Method  GET
> +        URI     /stats/portdesc/<dpid>
> +        ======= =======================
> +
> +    Response message body:
> +
> +        ============== ====================================== 
> ====================
> +        Attribute      Description                            Example
> +        ============== ====================================== 
> ====================
> +        dpid           Datapath ID                            "1"
> +        port_no        Port number                            1
> +        hw_addr        Ethernet hardware address              
> "0a:b6:d0:0c:e1:d7"
> +        name           Name of port                           "s1-eth1"
> +        config         Bitmap of OFPPC_* flags                0
> +        state          Bitmap of OFPPS_* flags                0
> +        curr           Current features                       2112
> +        advertised     Features being advertised by the port  0
> +        supported      Features supported by the port         0
> +        peer           Features advertised by peer            0
> +        curr_speed     Current port bitrate in kbps           1e+07
> +        max_speed      Max port bitrate in kbps               0
> +        ============== ====================================== 
> ====================
> +
> +    Example of use::
> +
> +        $ curl -X GET http://localhost:8080/stats/portdesc/1
> +
> +    ::
> +
> +        {
> +          "1": [
> +            {
> +              "port_no": 1,
> +              "hw_addr": "0a:b6:d0:0c:e1:d7",
> +              "name": "s1-eth1",
> +              "config": 0,
> +              "state": 0,
> +              "curr": 2112,
> +              "advertised": 0,
> +              "supported": 0,
> +              "peer": 0,
> +              "curr_speed": 1e+07,
> +              "max_speed": 0
> +            },
> +            {
> +              :
> +              :
> +            }
> +          ]
> +        }
> +
> +
> +Get groups stats
> +----------------
> +
> +    Get groups stats of the switch which specified with Datapath ID in URI.
> +
> +    Usage:
> +
> +        ======= ====================
> +        Method  GET
> +        URI     /stats/group/<dpid>
> +        ======= ====================
> +
> +    Response message body:
> +
> +        ================ 
> ============================================================== =========
> +        Attribute        Description                                         
>            Example
> +        ================ 
> ============================================================== =========
> +        dpid             Datapath ID                                         
>            "1"
> +        length           Length of this entry                                
>            56
> +        group_id         Group ID                                            
>            1
> +        ref_count        Number of flows or groups that directly forward to 
> this group  1
> +        packet_count     Number of packets processed by group                
>            0
> +        byte_count       Number of bytes processed by group                  
>            0
> +        duration_sec     Time group has been alive in seconds                
>            161
> +        duration_nsec    Time group has been alive in nanoseconds            
>            3.03e+08
> +        bucket_stats     struct ofp_bucket_counter
> +        -- packet_count  Number of packets processed by bucket               
>            0
> +        -- byte_count    Number of bytes processed by bucket                 
>            0
> +        ================ 
> ============================================================== =========
> +
> +    Example of use::
> +
> +        $ curl -X GET http://localhost:8080/stats/group/1
> +
> +    ::
> +
> +        {
> +          "1": [
> +            {
> +              "length": 56,
> +              "group_id": 1,
> +              "ref_count": 1,
> +              "packet_count": 0,
> +              "byte_count": 0,
> +              "duration_sec": 161,
> +              "duration_nsec": 3.03e+08,
> +              "bucket_stats": [
> +                {
> +                  "packet_count": 0,
> +                  "byte_count": 0
> +                }
> +              ]
> +            }
> +          ]
> +        }
> +
> +
> +.. _get-group-description-stats:
> +
> +Get group description stats
> +---------------------------
> +
> +    Get group description stats of the switch which specified with Datapath 
> ID in URI.
> +
> +    Usage:
> +
> +        ======= ========================
> +        Method  GET
> +        URI     /stats/groupdesc/<dpid>
> +        ======= ========================
> +
> +    Response message body:
> +
> +        =============== 
> ======================================================= =============
> +        Attribute       Description                                          
>    Example
> +        =============== 
> ======================================================= =============
> +        dpid            Datapath ID                                          
>    "1"
> +        type            One of OFPGT_*                                       
>    "ALL"
> +        group_id        Group ID                                             
>    1
> +        buckets         struct ofp_bucket
> +        -- weight       Relative weight of bucket                            
>    0
> +                        (Only defined for select groups)
> +        -- watch_port   Port whose state affects whether this bucket is live 
>    4294967295
> +                        (Only required for fast failover groups)
> +        -- watch_group  Group whose state affects whether this bucket is 
> live   4294967295
> +                        (Only required for fast failover groups)
> +        -- actions      0 or more actions associated with the bucket         
>    ["OUTPUT:1"]
> +        =============== 
> ======================================================= =============
> +
> +    Example of use::
> +
> +        $ curl -X GET http://localhost:8080/stats/groupdesc/1
> +
> +    ::
> +
> +        {
> +          "1": [
> +            {
> +              "type": "ALL",
> +              "group_id": 1,
> +              "buckets": [
> +                {
> +                  "weight": 0,
> +                  "watch_port": 4294967295,
> +                  "watch_group": 4294967295,
> +                  "actions": [
> +                    "OUTPUT:1"
> +                  ]
> +                }
> +              ]
> +            }
> +          ]
> +        }
> +
> +
> +Get group features stats
> +------------------------
> +
> +    Get group features stats of the switch which specified with Datapath ID 
> in URI.
> +
> +    Usage:
> +
> +        ======= ============================
> +        Method  GET
> +        URI     /stats/groupfeatures/<dpid>
> +        ======= ============================
> +
> +    Response message body:
> +
> +        ============== =========================================== 
> ===============================================
> +        Attribute      Description                                 Example
> +        ============== =========================================== 
> ===============================================
> +        dpid           Datapath ID                                 "1"
> +        types          Bitmap of (1 << OFPGT_*) values supported   []
> +        capabilities   Bitmap of OFPGFC_* capability supported     
> ["SELECT_WEIGHT","SELECT_LIVENESS","CHAINING"]
> +        max_groups     Maximum number of groups for each type      [{"ALL": 
> 4294967040},...]
> +        actions        Bitmaps of (1 << OFPAT_*) values supported  [{"ALL": 
> ["OUTPUT",...]},...]
> +        ============== =========================================== 
> ===============================================
> +
> +    Example of use::
> +
> +        $ curl -X GET http://localhost:8080/stats/groupfeatures/1
> +
> +    ::
> +
> +        {
> +          "1": [
> +            {
> +              "types": [],
> +              "capabilities": [
> +                "SELECT_WEIGHT",
> +                "SELECT_LIVENESS",
> +                "CHAINING"
> +              ],
> +              "max_groups": [
> +                {
> +                  "ALL": 4294967040
> +                },
> +                {
> +                  "SELECT": 4294967040
> +                },
> +                {
> +                  "INDIRECT": 4294967040
> +                },
> +                {
> +                  "FF": 4294967040
> +                }
> +              ],
> +              "actions": [
> +                {
> +                  "ALL": [
> +                    "OUTPUT",
> +                    "COPY_TTL_OUT",
> +                    "COPY_TTL_IN",
> +                    "SET_MPLS_TTL",
> +                    "DEC_MPLS_TTL",
> +                    "PUSH_VLAN",
> +                    "POP_VLAN",
> +                    "PUSH_MPLS",
> +                    "POP_MPLS",
> +                    "SET_QUEUE",
> +                    "GROUP",
> +                    "SET_NW_TTL",
> +                    "DEC_NW_TTL",
> +                    "SET_FIELD"
> +                  ]
> +                },
> +                {
> +                  "SELECT": []
> +                },
> +                {
> +                  "INDIRECT": []
> +                },
> +                {
> +                  "FF": []
> +                }
> +              ]
> +            }
> +          ]
> +        }
> +
> +
> +Get meters stats
> +----------------
> +
> +    Get meters stats of the switch which specified with Datapath ID in URI.
> +
> +    Usage:
> +
> +        ======= =======================
> +        Method  GET
> +        URI     /stats/meter/<dpid>
> +        ======= =======================
> +
> +    Response message body:
> +
> +        ===================== ========================================= 
> ========
> +        Attribute             Description                               
> Example
> +        ===================== ========================================= 
> ========
> +        dpid                  Datapath ID                               "1"
> +        meter_id              Meter ID                                  1
> +        len                   Length in bytes of this stats             56
> +        flow_count            Number of flows bound to meter            0
> +        packet_in_count       Number of packets in input                0
> +        byte_in_count         Number of bytes in input                  0
> +        duration_sec          Time meter has been alive in seconds      37
> +        duration_nsec         Time meter has been alive in nanoseconds  
> 988000
> +        band_stats            struct ofp_meter_band_stats
> +        -- packet_band_count  Number of packets in band                 0
> +        -- byte_band_count    Number of bytes in band                   0
> +        ===================== ========================================= 
> ========
> +
> +    Example of use::
> +
> +        $ curl -X GET http://localhost:8080/stats/meter/1
> +
> +    ::
> +
> +        {
> +          "1": [
> +            {
> +              "meter_id": 1,
> +              "len": 56,
> +              "flow_count": 0,
> +              "packet_in_count": 0,
> +              "byte_in_count": 0,
> +              "duration_sec": 37,
> +              "duration_nsec": 988000,
> +              "band_stats": [
> +                {
> +                  "packet_band_count": 0,
> +                  "byte_band_count": 0
> +                }
> +              ]
> +            }
> +          ]
> +        }
> +
> +
> +.. _get-meter-config-stats:
> +
> +Get meter config stats
> +------------------------
> +
> +    Get meter config stats of the switch which specified with Datapath ID in 
> URI.
> +
> +    Usage:
> +
> +        ======= ============================
> +        Method  GET
> +        URI     /stats/meterconfig/<dpid>
> +        ======= ============================
> +
> +    Response message body:
> +
> +        ============== ============================================ =========
> +        Attribute      Description                                  Example
> +        ============== ============================================ =========
> +        dpid           Datapath ID                                  "1"
> +        flags          All OFPMC_* that apply                       "KBPS"
> +        meter_id       Meter ID                                     1
> +        bands          struct ofp_meter_band_header
> +        -- type        One of OFPMBT_*                              "DROP"
> +        -- rate        Rate for this band                           1000
> +        -- burst_size  Size of bursts                               0
> +        ============== ============================================ =========
> +
> +    Example of use::
> +
> +        $ curl -X GET http://localhost:8080/stats/meterconfig/1
> +
> +    ::
> +
> +        {
> +          "1": [
> +            {
> +              "flags": [
> +                "KBPS"
> +              ],
> +              "meter_id": 1,
> +              "bands": [
> +                {
> +                  "type": "DROP",
> +                  "rate": 1000,
> +                  "burst_size": 0
> +                }
> +              ]
> +            }
> +          ]
> +        }
> +
> +
> +Get meter features stats
> +------------------------
> +
> +    Get meter features stats of the switch which specified with Datapath ID 
> in URI.
> +
> +    Usage:
> +
> +        ======= ============================
> +        Method  GET
> +        URI     /stats/meterfeatures/<dpid>
> +        ======= ============================
> +
> +    Response message body:
> +
> +        =========== ============================================ =========
> +        Attribute   Description                                  Example
> +        =========== ============================================ =========
> +        dpid        Datapath ID                                  "1"
> +        max_meter   Maximum number of meters                     256
> +        band_types  Bitmaps of (1 << OFPMBT_*) values supported  ['DROP']
> +        max_bands   Maximum bands per meters                     16
> +        max_color   Maximum color value                          8
> +        =========== ============================================ =========
> +
> +    Example of use::
> +
> +        $ curl -X GET http://localhost:8080/stats/meterfeatures/1
> +
> +    ::
> +
> +        {
> +          "1": [
> +            {
> +              "max_meter": 256,
> +              "band_types": [
> +                'DROP'
> +              ],
> +              "max_bands": 16,
> +              "max_color": 8
> +            }
> +          ]
> +        }
> +
> +
> +Update the switch stats
> +=======================
> +
> +Add a flow entry
> +----------------
> +
> +    Add a flow entry to the switch.
> +
> +    Usage:
> +
> +        ======= =====================
> +        Method  POST
> +        URI     /stats/flowentry/add
> +        ======= =====================
> +
> +    Request message body:
> +
> +        ============= ===================================================== 
> ============================== ===============
> +        Attribute     Description                                           
> Example                        Default
> +        ============= ===================================================== 
> ============================== ===============
> +        dpid          Datapath ID (int)                                     
> 1                              (Mandatory)
> +        cookie        Opaque controller-issued identifier (int)             
> 1                              0
> +        cookie_mask   Mask used to restrict the cookie bits (int)           
> 1                              0
> +        table_id      Table ID to put the flow in (int)                     
> 0                              0
> +        idle_timeout  Idle time before discarding (seconds) (int)           
> 30                             0
> +        hard_timeout  Max time before discarding (seconds) (int)            
> 30                             0
> +        priority      Priority level of flow entry (int)                    
> 11111                          0
> +        buffer_id     Buffered packet to apply to, or OFP_NO_BUFFER (int)   
> 1                              OFP_NO_BUFFER
> +        flags         Bitmap of OFPFF_* flags (int)                         
> 1                              0
> +        match         Fields to match (dict)                                
> {"in_port":1}                  {} #wildcarded
> +        actions       Instruction set (list of dict)                        
> [{"type":"OUTPUT", "port":2}]  [] #DROP
> +        ============= ===================================================== 
> ============================== ===============
> +
> +    Example of use::
> +
> +        $ curl -X POST -d '{ \
> +            "dpid": 1, \
> +            "cookie": 1, \
> +            "cookie_mask": 1, \
> +            "table_id": 0, \
> +            "idle_timeout": 30, \
> +            "hard_timeout": 30, \
> +            "priority": 11111, \
> +            "flags": 1, \
> +            "match":{ \
> +                "in_port":1 \
> +            }, \
> +            "actions":[ \
> +                { \
> +                    "type":"OUTPUT", \
> +                    "port": 2 \
> +                } \
> +            ] \
> +         }' \
> +         http://localhost:8080/stats/flowentry/add
> +
> +    ::
> +
> +        $ curl -X POST -d '{ \
> +            "dpid": 1, \
> +            "priority": 22222, \
> +            "match":{ \
> +                "in_port":1 \
> +            }, \
> +            "actions":[ \
> +                { \
> +                    "type":"GOTO_TABLE", \
> +                    "table_id": 1 \
> +                } \
> +            ] \
> +         }' \
> +         http://localhost:8080/stats/flowentry/add
> +
> +    ::
> +
> +        $ curl -X POST -d '{ \
> +            "dpid": 1, \
> +            "priority": 33333, \
> +            "match":{ \
> +                "in_port":1 \
> +            }, \
> +            "actions":[ \
> +                { \
> +                    "type":"WRITE_METADATA", \
> +                    "metadata": 1, \
> +                    "metadata_mask": 1 \
> +                } \
> +            ] \
> +         }' \
> +         http://localhost:8080/stats/flowentry/add
> +
> +    ::
> +
> +        $ curl -X POST -d '{ \
> +            "dpid": 1, \
> +            "priority": 44444, \
> +            "match":{ \
> +                "in_port":1 \
> +            }, \
> +            "actions":[ \
> +                { \
> +                    "type":"METER", \
> +                    "meter_id": 1 \
> +                } \
> +            ] \
> +         }' \
> +         http://localhost:8080/stats/flowentry/add
> +
> +    .. NOTE::
> +
> +        To confirm flow entry registration, please see 
> :ref:`get-all-flows-stats` or :ref:`get-flows-stats-filtered`.
> +
> +
> +Modify all matching flow entries
> +--------------------------------
> +
> +    Modify all matching flow entries of the switch.
> +
> +    Usage:
> +
> +        ======= ========================
> +        Method  POST
> +        URI     /stats/flowentry/modify
> +        ======= ========================
> +
> +    Request message body:
> +
> +        ============= ===================================================== 
> ============================== ===============
> +        Attribute     Description                                           
> Example                        Default
> +        ============= ===================================================== 
> ============================== ===============
> +        dpid          Datapath ID (int)                                     
> 1                              (Mandatory)
> +        cookie        Opaque controller-issued identifier (int)             
> 1                              0
> +        cookie_mask   Mask used to restrict the cookie bits (int)           
> 1                              0
> +        table_id      Table ID to put the flow in (int)                     
> 0                              0
> +        idle_timeout  Idle time before discarding (seconds) (int)           
> 30                             0
> +        hard_timeout  Max time before discarding (seconds) (int)            
> 30                             0
> +        priority      Priority level of flow entry (int)                    
> 11111                          0
> +        buffer_id     Buffered packet to apply to, or OFP_NO_BUFFER (int)   
> 1                              OFP_NO_BUFFER
> +        flags         Bitmap of OFPFF_* flags (int)                         
> 1                              0
> +        match         Fields to match (dict)                                
> {"in_port":1}                  {} #wildcarded
> +        actions       Instruction set (list of dict)                        
> [{"type":"OUTPUT", "port":2}]  [] #DROP
> +        ============= ===================================================== 
> ============================== ===============
> +
> +    Example of use::
> +
> +        $ curl -X POST -d '{ \
> +            "dpid": 1, \
> +            "cookie": 1, \
> +            "cookie_mask": 1, \
> +            "table_id": 0, \
> +            "idle_timeout": 30, \
> +            "hard_timeout": 30, \
> +            "priority": 11111, \
> +            "flags": 1, \
> +            "match":{ \
> +                "in_port":1 \
> +            }, \
> +            "actions":[ \
> +                { \
> +                    "type":"OUTPUT", \
> +                    "port": 2 \
> +                } \
> +            ] \
> +         }' \
> +         http://localhost:8080/stats/flowentry/modify
> +
> +
> +Modify flow entry strictly
> +--------------------------
> +
> +    Modify flow entry strictly matching wildcards and priority
> +
> +    Usage:
> +
> +        ======= ===============================
> +        Method  POST
> +        URI     /stats/flowentry/modify_strict
> +        ======= ===============================
> +
> +    Request message body:
> +
> +        ============= ===================================================== 
> ============================== ===============
> +        Attribute     Description                                           
> Example                        Default
> +        ============= ===================================================== 
> ============================== ===============
> +        dpid          Datapath ID (int)                                     
> 1                              (Mandatory)
> +        cookie        Opaque controller-issued identifier (int)             
> 1                              0
> +        cookie_mask   Mask used to restrict the cookie bits (int)           
> 1                              0
> +        table_id      Table ID to put the flow in (int)                     
> 0                              0
> +        idle_timeout  Idle time before discarding (seconds) (int)           
> 30                             0
> +        hard_timeout  Max time before discarding (seconds) (int)            
> 30                             0
> +        priority      Priority level of flow entry (int)                    
> 11111                          0
> +        buffer_id     Buffered packet to apply to, or OFP_NO_BUFFER (int)   
> 1                              OFP_NO_BUFFER
> +        flags         Bitmap of OFPFF_* flags (int)                         
> 1                              0
> +        match         Fields to match (dict)                                
> {"in_port":1}                  {} #wildcarded
> +        actions       Instruction set (list of dict)                        
> [{"type":"OUTPUT", "port":2}]  [] #DROP
> +        ============= ===================================================== 
> ============================== ===============
> +
> +    Example of use::
> +
> +        $ curl -X POST -d '{ \
> +            "dpid": 1, \
> +            "cookie": 1, \
> +            "cookie_mask": 1, \
> +            "table_id": 0, \
> +            "idle_timeout": 30, \
> +            "hard_timeout": 30, \
> +            "priority": 11111, \
> +            "flags": 1, \
> +            "match":{ \
> +                "in_port":1 \
> +            }, \
> +            "actions":[ \
> +                { \
> +                    "type":"OUTPUT", \
> +                    "port": 2 \
> +                } \
> +            ] \
> +         }' \
> +         http://localhost:8080/stats/flowentry/modify_strict
> +
> +
> +Delete all matching flow entries
> +--------------------------------
> +
> +    Delete all matching flow entries of the switch.
> +
> +    Usage:
> +
> +        ======= ========================
> +        Method  POST
> +        URI     /stats/flowentry/delete
> +        ======= ========================
> +
> +    Request message body:
> +
> +        ============= ===================================================== 
> ============================== ===============
> +        Attribute     Description                                           
> Example                        Default
> +        ============= ===================================================== 
> ============================== ===============
> +        dpid          Datapath ID (int)                                     
> 1                              (Mandatory)
> +        cookie        Opaque controller-issued identifier (int)             
> 1                              0
> +        cookie_mask   Mask used to restrict the cookie bits (int)           
> 1                              0
> +        table_id      Table ID to put the flow in (int)                     
> 0                              0
> +        idle_timeout  Idle time before discarding (seconds) (int)           
> 30                             0
> +        hard_timeout  Max time before discarding (seconds) (int)            
> 30                             0
> +        priority      Priority level of flow entry (int)                    
> 11111                          0
> +        buffer_id     Buffered packet to apply to, or OFP_NO_BUFFER (int)   
> 1                              OFP_NO_BUFFER
> +        out_port      Output port (int)                                     
> 1                              OFPP_ANY
> +        out_group     Output group (int)                                    
> 1                              OFPG_ANY
> +        flags         Bitmap of OFPFF_* flags (int)                         
> 1                              0
> +        match         Fields to match (dict)                                
> {"in_port":1}                  {} #wildcarded
> +        actions       Instruction set (list of dict)                        
> [{"type":"OUTPUT", "port":2}]  [] #DROP
> +        ============= ===================================================== 
> ============================== ===============
> +
> +    Example of use::
> +
> +        $ curl -X POST -d '{ \
> +            "dpid": 1, \
> +            "cookie": 1, \
> +            "cookie_mask": 1, \
> +            "table_id": 0, \
> +            "idle_timeout": 30, \
> +            "hard_timeout": 30, \
> +            "priority": 11111, \
> +            "flags": 1, \
> +            "match":{ \
> +                "in_port":1 \
> +            }, \
> +            "actions":[ \
> +                { \
> +                    "type":"OUTPUT", \
> +                    "port": 2 \
> +                } \
> +            ] \
> +         }' \
> +         http://localhost:8080/stats/flowentry/delete
> +
> +
> +Delete flow entry strictly
> +--------------------------
> +
> +    Delete flow entry strictly matching wildcards and priority.
> +
> +    Usage:
> +
> +        ======= ===============================
> +        Method  POST
> +        URI     /stats/flowentry/delete_strict
> +        ======= ===============================
> +
> +    Request message body:
> +
> +        ============= ===================================================== 
> ============================== ===============
> +        Attribute     Description                                           
> Example                        Default
> +        ============= ===================================================== 
> ============================== ===============
> +        dpid          Datapath ID (int)                                     
> 1                              (Mandatory)
> +        cookie        Opaque controller-issued identifier (int)             
> 1                              0
> +        cookie_mask   Mask used to restrict the cookie bits (int)           
> 1                              0
> +        table_id      Table ID to put the flow in (int)                     
> 0                              0
> +        idle_timeout  Idle time before discarding (seconds) (int)           
> 30                             0
> +        hard_timeout  Max time before discarding (seconds) (int)            
> 30                             0
> +        priority      Priority level of flow entry (int)                    
> 11111                          0
> +        buffer_id     Buffered packet to apply to, or OFP_NO_BUFFER (int)   
> 1                              OFP_NO_BUFFER
> +        out_port      Output port (int)                                     
> 1                              OFPP_ANY
> +        out_group     Output group (int)                                    
> 1                              OFPG_ANY
> +        flags         Bitmap of OFPFF_* flags (int)                         
> 1                              0
> +        match         Fields to match (dict)                                
> {"in_port":1}                  {} #wildcarded
> +        actions       Instruction set (list of dict)                        
> [{"type":"OUTPUT", "port":2}]  [] #DROP
> +        ============= ===================================================== 
> ============================== ===============
> +
> +    Example of use::
> +
> +        $ curl -X POST -d '{ \
> +            "dpid": 1, \
> +            "cookie": 1, \
> +            "cookie_mask": 1, \
> +            "table_id": 0, \
> +            "idle_timeout": 30, \
> +            "hard_timeout": 30, \
> +            "priority": 11111, \
> +            "flags": 1, \
> +            "match":{ \
> +                "in_port":1 \
> +            }, \
> +            "actions":[ \
> +                { \
> +                    "type":"OUTPUT", \
> +                    "port": 2 \
> +                } \
> +            ] \
> +         }' \
> +         http://localhost:8080/stats/flowentry/delete_strict
> +
> +
> +Delete all flow entries
> +-----------------------
> +
> +    Delete all flow entries of the switch which specified with Datapath ID 
> in URI.
> +
> +    Usage:
> +
> +        ======= ==============================
> +        Method  DELETE
> +        URI     /stats/flowentry/clear/<dpid>
> +        ======= ==============================
> +
> +    Example of use::
> +
> +        $ curl -X DELETE http://localhost:8080/stats/flowentry/clear/1
> +
> +
> +Add a group entry
> +-----------------
> +
> +    Add a group entry to the switch.
> +
> +    Usage:
> +
> +        ======= ======================
> +        Method  POST
> +        URI     /stats/groupentry/add
> +        ======= ======================
> +
> +    Request message body:
> +
> +        =============== 
> ============================================================ 
> ================================ ============
> +        Attribute       Description                                          
>         Example                          Default
> +        =============== 
> ============================================================ 
> ================================ ============
> +        dpid            Datapath ID (int)                                    
>         1                                (Mandatory)
> +        type            One of OFPGT_* (string)                              
>         "ALL"                            "ALL"
> +        group_id        Group ID (int)                                       
>         1                                0
> +        buckets         struct ofp_bucket
> +        -- weight       Relative weight of bucket                            
>         0                                0
> +                        (Only defined for select groups)
> +        -- watch_port   Port whose state affects whether this bucket is live 
>         4294967295                       OFPP_ANY
> +                        (Only required for fast failover groups)
> +        -- watch_group  Group whose state affects whether this bucket is 
> live        4294967295                       OFPG_ANY
> +                        (Only required for fast failover groups)
> +        -- actions      0 or more actions associated with the bucket (list 
> of dict)  [{"type": "OUTPUT", "port": 1}]  [] #DROP
> +        =============== 
> ============================================================ 
> ================================ ============
> +
> +    Example of use::
> +
> +        $ curl -X POST -d '{ \
> +            "dpid": 1, \
> +            "type": "ALL", \
> +            "group_id": 1, \
> +            "buckets": [ \
> +                { \
> +                    "actions": [ \
> +                        { \
> +                            "type": "OUTPUT", \
> +                            "port": 1 \
> +                        } \
> +                    ] \
> +                } \
> +            ] \
> +         }' \
> +         http://localhost:8080/stats/groupentry/add
> +
> +    .. NOTE::
> +
> +        To confirm group entry registration, please see 
> :ref:`get-group-description-stats`.
> +
> +
> +Modify a group entry
> +--------------------
> +
> +    Modify a group entry to the switch.
> +
> +    Usage:
> +
> +        ======= =========================
> +        Method  POST
> +        URI     /stats/groupentry/modify
> +        ======= =========================
> +
> +    Request message body:
> +
> +        =============== 
> ============================================================ 
> ================================ ============
> +        Attribute       Description                                          
>         Example                          Default
> +        =============== 
> ============================================================ 
> ================================ ============
> +        dpid            Datapath ID (int)                                    
>         1                                (Mandatory)
> +        type            One of OFPGT_* (string)                              
>         "ALL"                            "ALL"
> +        group_id        Group ID (int)                                       
>         1                                0
> +        buckets         struct ofp_bucket
> +        -- weight       Relative weight of bucket                            
>         0                                0
> +                        (Only defined for select groups)
> +        -- watch_port   Port whose state affects whether this bucket is live 
>         4294967295                       OFPP_ANY
> +                        (Only required for fast failover groups)
> +        -- watch_group  Group whose state affects whether this bucket is 
> live        4294967295                       OFPG_ANY
> +                        (Only required for fast failover groups)
> +        -- actions      0 or more actions associated with the bucket (list 
> of dict)  [{"type": "OUTPUT", "port": 1}]  [] #DROP
> +        =============== 
> ============================================================ 
> ================================ ============
> +
> +    Example of use::
> +
> +        $ curl -X POST -d '{ \
> +            "dpid": 1, \
> +            "type": "ALL", \
> +            "group_id": 1, \
> +            "buckets": [ \
> +                { \
> +                    "actions": [ \
> +                        { \
> +                            "type": "OUTPUT", \
> +                            "port": 1 \
> +                        } \
> +                    ] \
> +                } \
> +            ] \
> +         }' \
> +         http://localhost:8080/stats/groupentry/modify
> +
> +
> +Delete a group entry
> +--------------------
> +
> +    Delete a group entry to the switch.
> +
> +    Usage:
> +
> +        ======= =========================
> +        Method  POST
> +        URI     /stats/groupentry/delete
> +        ======= =========================
> +
> +    Request message body:
> +
> +        =========== ======================== ======== ============
> +        Attribute   Description              Example  Default
> +        =========== ======================== ======== ============
> +        dpid        Datapath ID (int)        1        (Mandatory)
> +        group_id    Group ID (int)           1        0
> +        =========== ======================== ======== ============
> +
> +    Example of use::
> +
> +        $ curl -X POST -d '{ \
> +            "dpid": 1, \
> +            "group_id": 1 \
> +         }' \
> +         http://localhost:8080/stats/groupentry/delete
> +
> +
> +Modify the behavior of the port
> +-------------------------------
> +
> +    Modify the behavior of the physical port.
> +
> +    Usage:
> +
> +        ======= =======================
> +        Method  POST
> +        URI     /stats/portdesc/modify
> +        ======= =======================
> +
> +    Request message body:
> +
> +        =========== ============================================ ======== 
> ============
> +        Attribute   Description                                  Example  
> Default
> +        =========== ============================================ ======== 
> ============
> +        dpid        Datapath ID (int)                            1        
> (Mandatory)
> +        port_no     Port number (int)                            1        0
> +        config      Bitmap of OFPPC_* flags (int)                1        0
> +        mask        Bitmap of OFPPC_* flags to be changed (int)  1        0
> +        =========== ============================================ ======== 
> ============
> +
> +    Example of use::
> +
> +        $ curl -X POST -d '{ \
> +            "dpid": 1, \
> +            "port_no": 1, \
> +            "config": 1, \
> +            "mask": 1 \
> +            }' \
> +         http://localhost:8080/stats/portdesc/modify
> +
> +    .. NOTE::
> +
> +        To confirm port description, please see :ref:`get-ports-description`.
> +
> +
> +Add a meter entry
> +-----------------
> +
> +    Add a meter entry to the switch.
> +
> +    Usage:
> +
> +        ======= ======================
> +        Method  POST
> +        URI     /stats/meterentry/add
> +        ======= ======================
> +
> +    Request message body:
> +
> +        ============== =============================== ========= ============
> +        Attribute      Description                     Example   Default
> +        ============== =============================== ========= ============
> +        dpid           Datapath ID (int)               1         (Mandatory)
> +        flags          Bitmap of OFPMF_* flags (list)  ["KBPS"]  [] #Empty
> +        meter_id       Meter ID (int)                  1         0
> +        bands          struct ofp_meter_band_header
> +        -- type        One of OFPMBT_* (string)        "DROP"    None
> +        -- rate        Rate for this band (int)        1000      None
> +        -- burst_size  Size of bursts (int)            100       None
> +        ============== =============================== ========= ============
> +
> +    Example of use::
> +
> +        $ curl -X POST -d '{ \
> +            "dpid": 1, \
> +            "flags": "KBPS", \
> +            "meter_id": 1, \
> +            "bands": [ \
> +                { \
> +                    "type": "DROP", \
> +                    "rate": 1000 \
> +                } \
> +            ] \
> +         }' \
> +         http://localhost:8080/stats/meterentry/add
> +
> +    .. NOTE::
> +
> +        To confirm meter entry registration, please see 
> :ref:`get-meter-config-stats`.
> +
> +
> +Modify a meter entry
> +--------------------
> +
> +    Modify a meter entry to the switch.
> +
> +    Usage:
> +
> +        ======= =========================
> +        Method  POST
> +        URI     /stats/meterentry/modify
> +        ======= =========================
> +
> +    Request message body:
> +
> +        ============== =============================== ========= ============
> +        Attribute      Description                     Example   Default
> +        ============== =============================== ========= ============
> +        dpid           Datapath ID (int)               1         (Mandatory)
> +        flags          Bitmap of OFPMF_* flags (list)  ["KBPS"]  [] #Empty
> +        meter_id       Meter ID (int)                  1         0
> +        bands          struct ofp_meter_band_header
> +        -- type        One of OFPMBT_* (string)        "DROP"    None
> +        -- rate        Rate for this band (int)        1000      None
> +        -- burst_size  Size of bursts (int)            100       None
> +        ============== =============================== ========= ============
> +
> +    Example of use::
> +
> +        $ curl -X POST -d '{ \
> +            "dpid": 1, \
> +            "meter_id": 1, \
> +            "flags": "KBPS", \
> +            "bands": [ \
> +                { \
> +                    "type": "DROP", \
> +                    "rate": 1000 \
> +                } \
> +            ] \
> +         }' \
> +         http://localhost:8080/stats/meterentry/modify
> +
> +
> +Delete a meter entry
> +--------------------
> +
> +    Delete a meter entry to the switch.
> +
> +    Usage:
> +
> +        ======= =========================
> +        Method  POST
> +        URI     /stats/meterentry/delete
> +        ======= =========================
> +
> +    Request message body:
> +
> +        =========== ================== ========= ============
> +        Attribute   Description        Example   Default
> +        =========== ================== ========= ============
> +        dpid        Datapath ID (int)  1         (Mandatory)
> +        meter_id    Meter ID (int)     1         0
> +        =========== ================== ========= ============
> +
> +    Example of use::
> +
> +        $ curl -X POST -d '{ \
> +            "dpid": 1, \
> +            "meter_id": 1 \
> +         }' \
> +         http://localhost:8080/stats/meterentry/delete
> +
> +
> +Support for experimenter multipart
> +==================================
> +
> +Send a experimenter message
> +---------------------------
> +
> +    Send a experimenter message to the switch which specified with Datapath 
> ID in URI.
> +
> +
> +    Usage:
> +
> +        ======= ===========================
> +        Method  POST
> +        URI     /stats/experimenter/<dpid>
> +        ======= ===========================
> +
> +    Request message body:
> +
> +        ============= ============================================ ======== 
> ============
> +        Attribute     Description                                  Example  
> Default
> +        ============= ============================================ ======== 
> ============
> +        dpid          Datapath ID (int)                            1        
> (Mandatory)
> +        experimenter  Experimenter ID (int)                        1        0
> +        exp_type      Experimenter defined (int)                   1        0
> +        data_type     Data format type ("ascii" or "base64")       "ascii"  
> "ascii"
> +        data          Data to send (string)                        "data"   
> "" #Empty
> +        ============= ============================================ ======== 
> ============
> +
> +    Example of use::
> +
> +        $ curl -X POST -d '{ \
> +            "dpid": 1, \
> +            "experimenter": 1, \
> +            "exp_type": 1, \
> +            "data_type": "ascii", \
> +            "data": "data" \
> +            }' \
> +         http://localhost:8080/stats/experimenter/1
> -- 
> 1.9.1
> 
> 
> ------------------------------------------------------------------------------
> Meet PCI DSS 3.0 Compliance Requirements with EventLog Analyzer
> Achieve PCI DSS 3.0 Compliant Status with Out-of-the-box PCI DSS Reports
> Are you Audit-Ready for PCI DSS 3.0 Compliance? Download White paper
> Comply to PCI DSS 3.0 Requirement 10 and 11.5 with EventLog Analyzer
> http://pubads.g.doubleclick.net/gampad/clk?id=154622311&iu=/4140/ostg.clktrk
> _______________________________________________
> Ryu-devel mailing list
> [email protected]
> https://lists.sourceforge.net/lists/listinfo/ryu-devel

------------------------------------------------------------------------------
Meet PCI DSS 3.0 Compliance Requirements with EventLog Analyzer
Achieve PCI DSS 3.0 Compliant Status with Out-of-the-box PCI DSS Reports
Are you Audit-Ready for PCI DSS 3.0 Compliance? Download White paper
Comply to PCI DSS 3.0 Requirement 10 and 11.5 with EventLog Analyzer
http://pubads.g.doubleclick.net/gampad/clk?id=154622311&iu=/4140/ostg.clktrk
_______________________________________________
Ryu-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/ryu-devel

Reply via email to