match.nw_dst, like most IP addresses in POX, is an IPAddr object (as discussed
in the manual and in the reference for pox.lib.addresses). You can't compare
it against a string that isn't a valid IP address -- and the one you're
supplying isn't (since it has the prefix size). But it appears that what
you're doing will *never* be true. from_packet() creates an exact match -- not
a /24 subnet match -- so the match will never have a /24 subnet match. If what
you want is to see whether the match has an address that falls in that subnet,
you want to use IPAddr's .in_network...
if match.nw_dst.in_network("192.168.11.0/24"): ...
Of course, this assumes that nw_dst isn't None (because it wasn't an IP
packet). You may well be better of using the packet object itself. Finding
the IP header and using its dstip attribute instead of the one in the match
object. Among other things, the one in the match may have been set when the
packet is ARP as well as IP, which may not be what you wanted.
Incidentally, if one *does* want to actually read the IP wildcards from a match
object, doing so is described in the manual in the "Match Structure" section.
-- Murphy
On Mar 5, 2014, at 5:52 AM, ㄜˊ ㄋㄣˋ ㄜˊ ㄋㄣˋ <[email protected]> wrote:
> Hi, everyone
> I want to match netmask,but it will occur error
> This is my code below
>
> case1:
>
> match = of.ofp_match.from_packet(packet)
> if match.nw_dst == "192.168.11.0/24":
> print 'It's Work'
>
> The Error :
> AttributeError: 'str' object has no attribute '__cmp__'
>
> case2:
>
> m = nx.nx_match()
> if m.of_ip_src == "192.168.11.0/24":
> print m.of_ip_src
> #But print None ..
>
>
> What should I do to match src_ip in the subnet?
> How to solve this Problem?
>
> I will appreciate your reply !
> Thanks !