Fix: "AddrFormatError: address '...' is not an EUIv48"
Signed-off-by: FUJITA Tomonori <fujita.tomonori@lab.ntt.co.jp>
This commit is contained in:
parent
73416eacb1
commit
c1c78269ac
@ -21,6 +21,7 @@ Decoder/Encoder implementations of OpenFlow 1.0.
|
|||||||
import struct
|
import struct
|
||||||
import binascii
|
import binascii
|
||||||
import six
|
import six
|
||||||
|
import netaddr
|
||||||
|
|
||||||
from ryu.ofproto.ofproto_parser import StringifyMixin, MsgBase
|
from ryu.ofproto.ofproto_parser import StringifyMixin, MsgBase
|
||||||
from ryu.lib import addrconv
|
from ryu.lib import addrconv
|
||||||
@ -214,7 +215,7 @@ class OFPMatch(StringifyMixin):
|
|||||||
self.dl_src = mac.DONTCARE
|
self.dl_src = mac.DONTCARE
|
||||||
else:
|
else:
|
||||||
wc &= ~ofproto.OFPFW_DL_SRC
|
wc &= ~ofproto.OFPFW_DL_SRC
|
||||||
if isinstance(dl_src, (six.text_type, str)) and ':' in dl_src:
|
if isinstance(dl_src, (six.text_type, str)) and netaddr.valid_mac(dl_src):
|
||||||
dl_src = addrconv.mac.text_to_bin(dl_src)
|
dl_src = addrconv.mac.text_to_bin(dl_src)
|
||||||
if dl_src == 0:
|
if dl_src == 0:
|
||||||
self.dl_src = mac.DONTCARE
|
self.dl_src = mac.DONTCARE
|
||||||
@ -225,7 +226,7 @@ class OFPMatch(StringifyMixin):
|
|||||||
self.dl_dst = mac.DONTCARE
|
self.dl_dst = mac.DONTCARE
|
||||||
else:
|
else:
|
||||||
wc &= ~ofproto.OFPFW_DL_DST
|
wc &= ~ofproto.OFPFW_DL_DST
|
||||||
if isinstance(dl_dst, (six.text_type, str)) and ':' in dl_dst:
|
if isinstance(dl_dst, (six.text_type, str)) and netaddr.valid_mac(dl_dst):
|
||||||
dl_dst = addrconv.mac.text_to_bin(dl_dst)
|
dl_dst = addrconv.mac.text_to_bin(dl_dst)
|
||||||
if dl_dst == 0:
|
if dl_dst == 0:
|
||||||
self.dl_dst = mac.DONTCARE
|
self.dl_dst = mac.DONTCARE
|
||||||
@ -517,7 +518,7 @@ class OFPActionStripVlan(OFPAction):
|
|||||||
class OFPActionDlAddr(OFPAction):
|
class OFPActionDlAddr(OFPAction):
|
||||||
def __init__(self, dl_addr):
|
def __init__(self, dl_addr):
|
||||||
super(OFPActionDlAddr, self).__init__()
|
super(OFPActionDlAddr, self).__init__()
|
||||||
if isinstance(dl_addr, (six.text_type, str)) and ':' in dl_addr:
|
if isinstance(dl_addr, (six.text_type, str)) and netaddr.valid_mac(dl_addr):
|
||||||
dl_addr = addrconv.mac.text_to_bin(dl_addr)
|
dl_addr = addrconv.mac.text_to_bin(dl_addr)
|
||||||
self.dl_addr = dl_addr
|
self.dl_addr = dl_addr
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user