{-# 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
/= :: LinkStat -> LinkStat -> Bool
$c/= :: LinkStat -> LinkStat -> Bool
== :: LinkStat -> LinkStat -> Bool
$c== :: 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
showList :: [LinkStat] -> ShowS
$cshowList :: [LinkStat] -> ShowS
show :: LinkStat -> String
$cshow :: LinkStat -> String
showsPrec :: Int -> LinkStat -> ShowS
$cshowsPrec :: Int -> 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 :: Get a -> Get LinkStat
getLinkStat Get a
get = do
Word64
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
Word64
txp <- 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
Word64
rxb <- 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
Word64
txb <- 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
Word64
rxe <- 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
Word64
txe <- 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
Word64
rxd <- 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
Word64
txd <- 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
Word64
mul <- 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
Word64
col <- 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
Word64
rxle <- 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
Word64
rxoe <- 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
Word64
rxce <- 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
Word64
rxfe <- 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
Word64
rxfi <- 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
Word64
rxme <- 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
Word64
txae <- 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
Word64
txce <- 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
Word64
txfi <- 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
Word64
txhe <- 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
Word64
txwe <- 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
Word64
rxco <- 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
Word64
txco <- 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
LinkStat -> Get LinkStat
forall (m :: * -> *) a. Monad m => a -> m a
return (Word64
-> Word64
-> Word64
-> Word64
-> Word64
-> Word64
-> Word64
-> Word64
-> Word64
-> Word64
-> Word64
-> Word64
-> Word64
-> Word64
-> Word64
-> Word64
-> Word64
-> Word64
-> Word64
-> Word64
-> Word64
-> Word64
-> Word64
-> LinkStat
LinkStat Word64
rxp Word64
txp Word64
rxb Word64
txb Word64
rxe
Word64
txe Word64
rxd Word64
txd Word64
mul Word64
col
Word64
rxle Word64
rxoe Word64
rxce Word64
rxfe
Word64
rxfi Word64
rxme Word64
txae Word64
txce
Word64
txfi Word64
txhe Word64
txwe Word64
rxco
Word64
txco)
putLinkStat :: Num a => (a -> Put) -> LinkStat -> Put
putLinkStat :: (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