Skip to content

Conversation

@shun159
Copy link
Member

@shun159 shun159 commented Nov 26, 2015

No description provided.

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Use delegate to define delegations.

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Place the . on the previous line, together with the method call receiver.

@shun159
Copy link
Member Author

shun159 commented Nov 30, 2015

書きかけ

NiciraLearn

NiciraLearn.new(
  idle_timeout: 0,
  hard_timeout: 0,
  table_id: 255, # 0xff が有効な値かどうかは未確認です。
  # => 追記: 0xffは無効です。bad action/bad argumentが帰ってきてしまいます。なので、defaultは0が無難か
  priority: 65535,
  cookie: 0,
  flags: [], # :send_flow_rem || :delete_learned
  fin_hard_timeout: 0,
  fin_idle_timeout: 0,
  specs: [])

specs

# NXM_OF_VLAN_TCI[0..11]がマッチフィールドに追加される。vlan_tciフィールドの12bitをコピーする。
# 同じマッチフィールドへのコピーの場合は、単に #{ field名 }[ofs:nbits] となる。
# コピー先のマッチフィールドは、以下のようになる。
# vlan_tci=0x0000/0x0fff
# NXM_NX_VLAN_TCIは16bit長さであるが、vlan_idは0..11bitの範囲である。
# 上のようにマスクがかかり、vlan_idとマッチできる。
LearnMatch.new(
  n_bits: 12, # デフォルトはdstに指定したoxm_fieldのビット数
  src: :vlan_tci,
  dst: :vlan_tci)

# NXM_NX_REG0[0..15]=0x1をマッチフィールドに追加する。dst_fieldのビット長 == ofs+nbitsなら、単に#{dst_field名}=#{value}
# となる。dst_fieldのビット長 > ofs+nbitsの場合には、#{dst_field名}[ofs:nbits]表記となる。コピー後にはmaskがかかる。
# コピー先のマッチフィールドは、以下のようになる。
# reg0=0x1/0xffff
# となる。LearnMatchと同様にマスクが可能。
WriteMatch.new(
  n_bits: 16,
  value:  1,
  dst: :reg0)

# load:#{ source_field値 }[ofs:nbits]->#{dst_field}[ofs:nbits]をactionsに追加する。 
# *Matchとはことなり、指定したdst_fieldにsrc_fieldの値がloadされる。
# コピー先のアクションは、以下のようになる。
# load:0->NXM_NX_REG1[0..11]
LearnLoad.new(
  n_bits: 12, # デフォルトはdstに指定したoxm_fieldのビット数
  src: :vlan_tci,
  dst: :reg1)

# load:#{value}->#{dst_field}[ofs:nbits]をactionsに追加する。
# *Matchとはことなり、指定したdst_fieldにsrc_fieldの値がloadされる。
# コピー先のアクションは、以下のようになる。
# load:2->NXM_NX_REG2[]
WriteLoad.new(
  n_bits: 32, # デフォルトはdstに指定したoxm_fieldのビット数
  value:  2,
  dst: :reg2)

SendOutReg.new(
  n_bits: 32, # デフォルトはoutputに指定したoxm_fieldのビット数
  output: :reg0,
  offset: 0)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants