@@ -111,7 +111,8 @@ module Controller = struct
111
111
let c_id = client_id_of_switch_exn t sw_id in
112
112
ChunkController. send_ignore_errors t.sub c_id (Message. marshal' msg)
113
113
114
- let send_to_all t msg = ChunkController. send_to_all t.sub (Message. marshal' msg)
114
+ let send_to_all t msg =
115
+ ChunkController. send_to_all t.sub (Message. marshal' msg)
115
116
116
117
let client_addr_port t sw_id =
117
118
let c_id = client_id_of_switch_exn t sw_id in
@@ -222,7 +223,7 @@ module Controller = struct
222
223
| M. BarrierReply -> Result. Ok ()
223
224
| _ -> assert false )
224
225
225
- let stats t sw_id pattern =
226
+ let aggregate_stats t sw_id pattern =
226
227
let open OpenFlow0x01_Stats in
227
228
let msg = AggregateRequest
228
229
{ as_of_match = pattern
@@ -232,4 +233,15 @@ module Controller = struct
232
233
send_txn_with t sw_id (M. StatsRequestMsg msg) (function
233
234
| M. StatsReplyMsg (AggregateFlowRep r ) -> Result. Ok r
234
235
| _ -> assert false )
236
+
237
+ let individual_stats t sw_id pattern =
238
+ let open OpenFlow0x01_Stats in
239
+ let msg = IndividualRequest
240
+ { is_of_match = pattern
241
+ ; is_table_id = 0xff
242
+ ; is_out_port = None }
243
+ in
244
+ send_txn_with t sw_id (M. StatsRequestMsg msg) (function
245
+ | M. StatsReplyMsg (IndividualFlowRep r ) -> Result. Ok r
246
+ | _ -> assert false )
235
247
end
0 commit comments