Skip to content

Commit eb5915a

Browse files
committed
Apply subnet mask to IP address
1 parent 5339990 commit eb5915a

File tree

1 file changed

+8
-7
lines changed

1 file changed

+8
-7
lines changed

iptc/ip4tc.py

Lines changed: 8 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -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

Comments
 (0)