{-# LANGUAGE CPP #-}
module System.Linux.Netlink.Route.LinkStat
( LinkStat
, getLinkStat64
, putLinkStat64
, getLinkStat32
, putLinkStat32
)
where
#if MIN_VERSION_base(4,8,0)
#else
import Control.Applicative ((<$>))
#endif
import Data.Serialize.Get (Get)
import Data.Serialize.Put (Put)
import System.Linux.Netlink.Helpers (g64, p64, g32, p32)
import Data.Word (Word64)
data LinkStat = LinkStat
{ LinkStat -> Word64
rxPackets :: Word64
, LinkStat -> Word64
txPackets :: Word64
, LinkStat -> Word64
rxBytes :: Word64
, LinkStat -> Word64
txBytes :: Word64
, LinkStat -> Word64
rxErrors :: Word64
, LinkStat -> Word64
txErrors :: Word64
, LinkStat -> Word64
rxDropped :: Word64
, LinkStat -> Word64
txDropped :: Word64
, LinkStat -> Word64
multicast :: Word64
, LinkStat -> Word64
collisions :: Word64
, LinkStat -> Word64
rxLengthErrors :: Word64
, LinkStat -> Word64
rxOverErrors :: Word64
, LinkStat -> Word64
rxCRCErrors :: Word64
, LinkStat -> Word64
rxFrameErrors :: Word64
, LinkStat -> Word64
rxFifoErrors :: Word64
, LinkStat -> Word64
rxMissedErrors :: Word64
, LinkStat -> Word64
txAbortedErrors :: Word64
, LinkStat -> Word64
txCarrierErrors :: Word64
, LinkStat -> Word64
txFifoErrors :: Word64
, LinkStat -> Word64
txHeartbeatErrors :: Word64
, LinkStat -> Word64
txWindowErrors :: Word64
, LinkStat -> Word64
rxCompressed :: Word64
, LinkStat -> Word64
txCompressed :: Word64
} deriving (LinkStat -> LinkStat -> Bool
(LinkStat -> LinkStat -> Bool)
-> (LinkStat -> LinkStat -> Bool) -> Eq LinkStat
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
$c== :: LinkStat -> LinkStat -> Bool
== :: LinkStat -> LinkStat -> Bool
$c/= :: LinkStat -> LinkStat -> Bool
/= :: LinkStat -> LinkStat -> Bool
Eq, Int -> LinkStat -> ShowS
[LinkStat] -> ShowS
LinkStat -> String
(Int -> LinkStat -> ShowS)
-> (LinkStat -> String) -> ([LinkStat] -> ShowS) -> Show LinkStat
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
$cshowsPrec :: Int -> LinkStat -> ShowS
showsPrec :: Int -> LinkStat -> ShowS
$cshow :: LinkStat -> String
show :: LinkStat -> String
$cshowList :: [LinkStat] -> ShowS
showList :: [LinkStat] -> ShowS
Show)
getLinkStat64 :: Get LinkStat
getLinkStat64 :: Get LinkStat
getLinkStat64 = Get Word64 -> Get LinkStat
forall a. Integral a => Get a -> Get LinkStat
getLinkStat Get Word64
g64
putLinkStat64 :: LinkStat -> Put
putLinkStat64 :: LinkStat -> Put
putLinkStat64 = (Word64 -> Put) -> LinkStat -> Put
forall a. Num a => (a -> Put) -> LinkStat -> Put
putLinkStat Word64 -> Put
p64
getLinkStat32 :: Get LinkStat
getLinkStat32 :: Get LinkStat
getLinkStat32 = Get Word32 -> Get LinkStat
forall a. Integral a => Get a -> Get LinkStat
getLinkStat Get Word32
g32
putLinkStat32 :: LinkStat -> Put
putLinkStat32 :: LinkStat -> Put
putLinkStat32 = (Word32 -> Put) -> LinkStat -> Put
forall a. Num a => (a -> Put) -> LinkStat -> Put
putLinkStat Word32 -> Put
p32
getLinkStat :: Integral a => Get a -> Get LinkStat
getLinkStat :: forall a. Integral a => Get a -> Get LinkStat
getLinkStat Get a
get = do
rxp <- a -> Word64
forall a b. (Integral a, Num b) => a -> b
fromIntegral (a -> Word64) -> Get a -> Get Word64
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Get a
get
txp <- fromIntegral <$> get
rxb <- fromIntegral <$> get
txb <- fromIntegral <$> get
rxe <- fromIntegral <$> get
txe <- fromIntegral <$> get
rxd <- fromIntegral <$> get
txd <- fromIntegral <$> get
mul <- fromIntegral <$> get
col <- fromIntegral <$> get
rxle <- fromIntegral <$> get
rxoe <- fromIntegral <$> get
rxce <- fromIntegral <$> get
rxfe <- fromIntegral <$> get
rxfi <- fromIntegral <$> get
rxme <- fromIntegral <$> get
txae <- fromIntegral <$> get
txce <- fromIntegral <$> get
txfi <- fromIntegral <$> get
txhe <- fromIntegral <$> get
txwe <- fromIntegral <$> get
rxco <- fromIntegral <$> get
txco <- fromIntegral <$> get
return (LinkStat rxp txp rxb txb rxe
txe rxd txd mul col
rxle rxoe rxce rxfe
rxfi rxme txae txce
txfi txhe txwe rxco
txco)
putLinkStat :: Num a => (a -> Put) -> LinkStat -> Put
putLinkStat :: forall a. Num a => (a -> Put) -> LinkStat -> Put
putLinkStat a -> Put
put LinkStat
msg = do
a -> Put
put (a -> Put) -> (Word64 -> a) -> Word64 -> Put
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Word64 -> a
forall a b. (Integral a, Num b) => a -> b
fromIntegral (Word64 -> Put) -> Word64 -> Put
forall a b. (a -> b) -> a -> b
$ LinkStat -> Word64
rxPackets LinkStat
msg
a -> Put
put (a -> Put) -> (Word64 -> a) -> Word64 -> Put
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Word64 -> a
forall a b. (Integral a, Num b) => a -> b
fromIntegral (Word64 -> Put) -> Word64 -> Put
forall a b. (a -> b) -> a -> b
$ LinkStat -> Word64
txPackets LinkStat
msg
a -> Put
put (a -> Put) -> (Word64 -> a) -> Word64 -> Put
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Word64 -> a
forall a b. (Integral a, Num b) => a -> b
fromIntegral (Word64 -> Put) -> Word64 -> Put
forall a b. (a -> b) -> a -> b
$ LinkStat -> Word64
rxBytes LinkStat
msg
a -> Put
put (a -> Put) -> (Word64 -> a) -> Word64 -> Put
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Word64 -> a
forall a b. (Integral a, Num b) => a -> b
fromIntegral (Word64 -> Put) -> Word64 -> Put
forall a b. (a -> b) -> a -> b
$ LinkStat -> Word64
txBytes LinkStat
msg
a -> Put
put (a -> Put) -> (Word64 -> a) -> Word64 -> Put
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Word64 -> a
forall a b. (Integral a, Num b) => a -> b
fromIntegral (Word64 -> Put) -> Word64 -> Put
forall a b. (a -> b) -> a -> b
$ LinkStat -> Word64
rxErrors LinkStat
msg
a -> Put
put (a -> Put) -> (Word64 -> a) -> Word64 -> Put
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Word64 -> a
forall a b. (Integral a, Num b) => a -> b
fromIntegral (Word64 -> Put) -> Word64 -> Put
forall a b. (a -> b) -> a -> b
$ LinkStat -> Word64
txErrors LinkStat
msg
a -> Put
put (a -> Put) -> (Word64 -> a) -> Word64 -> Put
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Word64 -> a
forall a b. (Integral a, Num b) => a -> b
fromIntegral (Word64 -> Put) -> Word64 -> Put
forall a b. (a -> b) -> a -> b
$ LinkStat -> Word64
rxDropped LinkStat
msg
a -> Put
put (a -> Put) -> (Word64 -> a) -> Word64 -> Put
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Word64 -> a
forall a b. (Integral a, Num b) => a -> b
fromIntegral (Word64 -> Put) -> Word64 -> Put
forall a b. (a -> b) -> a -> b
$ LinkStat -> Word64
txDropped LinkStat
msg
a -> Put
put (a -> Put) -> (Word64 -> a) -> Word64 -> Put
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Word64 -> a
forall a b. (Integral a, Num b) => a -> b
fromIntegral (Word64 -> Put) -> Word64 -> Put
forall a b. (a -> b) -> a -> b
$ LinkStat -> Word64
multicast LinkStat
msg
a -> Put
put (a -> Put) -> (Word64 -> a) -> Word64 -> Put
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Word64 -> a
forall a b. (Integral a, Num b) => a -> b
fromIntegral (Word64 -> Put) -> Word64 -> Put
forall a b. (a -> b) -> a -> b
$ LinkStat -> Word64
collisions LinkStat
msg
a -> Put
put (a -> Put) -> (Word64 -> a) -> Word64 -> Put
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Word64 -> a
forall a b. (Integral a, Num b) => a -> b
fromIntegral (Word64 -> Put) -> Word64 -> Put
forall a b. (a -> b) -> a -> b
$ LinkStat -> Word64
rxLengthErrors LinkStat
msg
a -> Put
put (a -> Put) -> (Word64 -> a) -> Word64 -> Put
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Word64 -> a
forall a b. (Integral a, Num b) => a -> b
fromIntegral (Word64 -> Put) -> Word64 -> Put
forall a b. (a -> b) -> a -> b
$ LinkStat -> Word64
rxOverErrors LinkStat
msg
a -> Put
put (a -> Put) -> (Word64 -> a) -> Word64 -> Put
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Word64 -> a
forall a b. (Integral a, Num b) => a -> b
fromIntegral (Word64 -> Put) -> Word64 -> Put
forall a b. (a -> b) -> a -> b
$ LinkStat -> Word64
rxCRCErrors LinkStat
msg
a -> Put
put (a -> Put) -> (Word64 -> a) -> Word64 -> Put
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Word64 -> a
forall a b. (Integral a, Num b) => a -> b
fromIntegral (Word64 -> Put) -> Word64 -> Put
forall a b. (a -> b) -> a -> b
$ LinkStat -> Word64
rxFrameErrors LinkStat
msg
a -> Put
put (a -> Put) -> (Word64 -> a) -> Word64 -> Put
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Word64 -> a
forall a b. (Integral a, Num b) => a -> b
fromIntegral (Word64 -> Put) -> Word64 -> Put
forall a b. (a -> b) -> a -> b
$ LinkStat -> Word64
rxFifoErrors LinkStat
msg
a -> Put
put (a -> Put) -> (Word64 -> a) -> Word64 -> Put
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Word64 -> a
forall a b. (Integral a, Num b) => a -> b
fromIntegral (Word64 -> Put) -> Word64 -> Put
forall a b. (a -> b) -> a -> b
$ LinkStat -> Word64
rxMissedErrors LinkStat
msg
a -> Put
put (a -> Put) -> (Word64 -> a) -> Word64 -> Put
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Word64 -> a
forall a b. (Integral a, Num b) => a -> b
fromIntegral (Word64 -> Put) -> Word64 -> Put
forall a b. (a -> b) -> a -> b
$ LinkStat -> Word64
txAbortedErrors LinkStat
msg
a -> Put
put (a -> Put) -> (Word64 -> a) -> Word64 -> Put
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Word64 -> a
forall a b. (Integral a, Num b) => a -> b
fromIntegral (Word64 -> Put) -> Word64 -> Put
forall a b. (a -> b) -> a -> b
$ LinkStat -> Word64
txCarrierErrors LinkStat
msg
a -> Put
put (a -> Put) -> (Word64 -> a) -> Word64 -> Put
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Word64 -> a
forall a b. (Integral a, Num b) => a -> b
fromIntegral (Word64 -> Put) -> Word64 -> Put
forall a b. (a -> b) -> a -> b
$ LinkStat -> Word64
txFifoErrors LinkStat
msg
a -> Put
put (a -> Put) -> (Word64 -> a) -> Word64 -> Put
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Word64 -> a
forall a b. (Integral a, Num b) => a -> b
fromIntegral (Word64 -> Put) -> Word64 -> Put
forall a b. (a -> b) -> a -> b
$ LinkStat -> Word64
txHeartbeatErrors LinkStat
msg
a -> Put
put (a -> Put) -> (Word64 -> a) -> Word64 -> Put
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Word64 -> a
forall a b. (Integral a, Num b) => a -> b
fromIntegral (Word64 -> Put) -> Word64 -> Put
forall a b. (a -> b) -> a -> b
$ LinkStat -> Word64
txWindowErrors LinkStat
msg
a -> Put
put (a -> Put) -> (Word64 -> a) -> Word64 -> Put
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Word64 -> a
forall a b. (Integral a, Num b) => a -> b
fromIntegral (Word64 -> Put) -> Word64 -> Put
forall a b. (a -> b) -> a -> b
$ LinkStat -> Word64
rxCompressed LinkStat
msg
a -> Put
put (a -> Put) -> (Word64 -> a) -> Word64 -> Put
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Word64 -> a
forall a b. (Integral a, Num b) => a -> b
fromIntegral (Word64 -> Put) -> Word64 -> Put
forall a b. (a -> b) -> a -> b
$ LinkStat -> Word64
txCompressed LinkStat
msg