def addr=(val)
      unless val.to_s =~ /^#{Util::RX_MAC_ADDR}$/
        raise(ArgumentError, "invalid mac address #{val.inspect}")
      end
      raw = Util.unhexify(val, /[:-]/)
      self[:data].to_ptr.write_string(raw, ETH_ADDR_LEN)
    end
def addr=(val)
      unless val.to_s =~ /^#{Util::RX_MAC_ADDR}$/
        raise(ArgumentError, "invalid mac address #{val.inspect}")
      end
      raw = Util.unhexify(val, /[:-]/)
      self[:data].to_ptr.write_string(raw, ETH_ADDR_LEN)
    end
Adds the ability to initialize a new MacAddr with a mac address
 string such as 'de:ad:be:ef:ba:be'. This argument is only parsed
 if it is passed as the only String argument.