@@ -1064,9 +1064,6 @@ def set_src(self, src):
10641064 saddr = _a_to_i (socket .inet_pton (socket .AF_INET , addr ))
10651065 except socket .error :
10661066 raise ValueError ("invalid address %s" % (addr ))
1067- ina = in_addr ()
1068- ina .s_addr = ct .c_uint32 (saddr )
1069- self .entry .ip .src = ina
10701067
10711068 if not netm .isdigit ():
10721069 try :
@@ -1080,8 +1077,11 @@ def set_src(self, src):
10801077 nmask = socket .htonl ((2 ** imask - 1 ) << (32 - imask ))
10811078 neta = in_addr ()
10821079 neta .s_addr = ct .c_uint32 (nmask )
1083-
10841080 self .entry .ip .smsk = neta
1081+ # Apply subnet mask to IP address
1082+ ina = in_addr ()
1083+ ina .s_addr = ct .c_uint32 (saddr & nmask )
1084+ self .entry .ip .src = ina
10851085
10861086 src = property (get_src , set_src )
10871087 """This is the source network address with an optional network mask in
@@ -1125,9 +1125,6 @@ def set_dst(self, dst):
11251125 daddr = _a_to_i (socket .inet_pton (socket .AF_INET , addr ))
11261126 except socket .error :
11271127 raise ValueError ("invalid address %s" % (addr ))
1128- ina = in_addr ()
1129- ina .s_addr = ct .c_uint32 (daddr )
1130- self .entry .ip .dst = ina
11311128
11321129 if not netm .isdigit ():
11331130 try :
@@ -1142,6 +1139,10 @@ def set_dst(self, dst):
11421139 neta = in_addr ()
11431140 neta .s_addr = ct .c_uint32 (nmask )
11441141 self .entry .ip .dmsk = neta
1142+ # Apply subnet mask to IP address
1143+ ina = in_addr ()
1144+ ina .s_addr = ct .c_uint32 (daddr & nmask )
1145+ self .entry .ip .dst = ina
11451146
11461147 dst = property (get_dst , set_dst )
11471148 """This is the destination network address with an optional network mask
0 commit comments