Ryu Controller で、選択したデータパスについて、スイッチから OpenFlow ルールを取得するにはどうすればよいですか? たとえば、次のルールの場合:
cookie=0x0、期間=18575.528s、テーブル=0、n_packets=1、n_bytes=98、優先度=1、ip、in_port=3、nw_dst=10.0.0.1 アクション=出力:1
nw_dst と actions フィールドを取得したい。
OFPTableStatsRequestオブジェクトを使用します。インストールされているすべてのフローのリストが返されます。
グループに対して同じことを行うOFPGroupStatsRequestもあります。
インスタンス変数datapathに依存する未テストの例。
import ryu.app.ofctl.api as api
def ofdpaTableStatsRequest(datapath):
parser = datapath.ofproto_parser
return parser.OFPTableStatsRequest(datapath)
def getFlows(self):
"""
Obtain a list of Flows loaded on the switch
`
:return: A list of Flow Entires
"""
msg = ofdpaTableStatsRequest(self.datapath)
reply = api.send_msg(self.ryuapp, msg,
reply_cls=self.parser.OFPTableStatsReply,
reply_multi=True)
// the flow entries you are looking for will be in the reply
これがうまくいくかどうか教えてください