Skip to content

Commit aef4e42

Browse files
committed
IPv4PktInfo now contains ipi_spec_dst.
1 parent 031df10 commit aef4e42

File tree

1 file changed

+8
-7
lines changed

1 file changed

+8
-7
lines changed

Network/Socket/Posix/Cmsg.hsc

Lines changed: 8 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -142,25 +142,26 @@ instance ControlMessage IPv6TClass where
142142
----------------------------------------------------------------
143143

144144
-- | Network interface ID and local IPv4 address.
145-
data IPv4PktInfo = IPv4PktInfo Int HostAddress deriving (Eq)
145+
data IPv4PktInfo = IPv4PktInfo Int HostAddress HostAddress deriving (Eq)
146146

147147
instance Show IPv4PktInfo where
148-
show (IPv4PktInfo n ha) = "IPv4PktInfo " ++ show n ++ " " ++ show (hostAddressToTuple ha)
148+
show (IPv4PktInfo n sa ha) = "IPv4PktInfo " ++ show n ++ " " ++ show (hostAddressToTuple sa) ++ " " ++ show (hostAddressToTuple ha)
149149

150150
instance ControlMessage IPv4PktInfo where
151151
controlMessageId _ = CmsgIdIPv4PktInfo
152152

153153
instance Storable IPv4PktInfo where
154154
sizeOf _ = (#size struct in_pktinfo)
155155
alignment _ = alignment (undefined :: CInt)
156-
poke p (IPv4PktInfo n ha) = do
156+
poke p (IPv4PktInfo n sa ha) = do
157157
(#poke struct in_pktinfo, ipi_ifindex) p (fromIntegral n :: CInt)
158-
(#poke struct in_pktinfo, ipi_spec_dst) p (0 :: CInt)
158+
(#poke struct in_pktinfo, ipi_spec_dst) p sa
159159
(#poke struct in_pktinfo, ipi_addr) p ha
160160
peek p = do
161-
n <- (#peek struct in_pktinfo, ipi_ifindex) p
162-
ha <- (#peek struct in_pktinfo, ipi_addr) p
163-
return $ IPv4PktInfo n ha
161+
n <- (#peek struct in_pktinfo, ipi_ifindex) p
162+
sa <- (#peek struct in_pktinfo, ipi_spec_dst) p
163+
ha <- (#peek struct in_pktinfo, ipi_addr) p
164+
return $ IPv4PktInfo n sa ha
164165

165166
----------------------------------------------------------------
166167

0 commit comments

Comments
 (0)