packages feed

haal-models-0.1.3.0: src/Haal/Models/TCP/TCPLinuxClient.hs

-- Generated by haal-gen. Do not edit manually.
module Haal.Models.TCP.TCPLinuxClient
    ( TCPLinuxClientInput (..)
    , TCPLinuxClientOutput (..)
    , tCPLinuxClient
    ) where

import Haal.Automaton.MealyAutomaton (MealyAutomaton, mkMealyAutomatonTable)

data TCPLinuxClientInput
    = In_ACK_RST_V_V_0
    | In_ACK_PSH_V_V_1
    | In_SYN_ACK_V_V_0
    | In_RST_V_V_0
    | In_ACK_V_V_0
    | In_FIN_ACK_V_V_0
    | In_SYN_V_V_0
    | In_RCV
    | In_CLOSE
    | In_CONNECT
    deriving (Show, Eq, Ord, Enum, Bounded)

data TCPLinuxClientOutput
    = Out_TIMEOUT
    | Out_RST_ZERO_ZERO_0
    | Out_ACK_RST_ZERO_NEXT_0
    | Out_SYN_FRESH_ZERO_0
    | Out_ACK_NEXT_NEXT_0
    | Out_ACK_SYN_CURRENT_NEXT_0
    | Out_ACK_FIN_NEXT_CURRENT_0
    | Out_ACK_NEXT_CURRENT_0
    | Out_RST_NEXT_ZERO_0
    | Out_ACK_SYN_FRESH_NEXT_0
    | Out_ACK_RST_NEXT_CURRENT_0
    deriving (Show, Eq, Ord, Enum, Bounded)

{- Transitions (state  input -> next state / output):
    0     In_ACK_RST_V_V_0  -> 0 / Out_TIMEOUT
          In_ACK_PSH_V_V_1  -> 0 / Out_RST_ZERO_ZERO_0
          In_SYN_ACK_V_V_0  -> 0 / Out_RST_ZERO_ZERO_0
          In_RST_V_V_0      -> 0 / Out_TIMEOUT
          In_ACK_V_V_0      -> 0 / Out_RST_ZERO_ZERO_0
          In_FIN_ACK_V_V_0  -> 0 / Out_RST_ZERO_ZERO_0
          In_SYN_V_V_0      -> 0 / Out_ACK_RST_ZERO_NEXT_0
          In_RCV            -> 0 / Out_TIMEOUT
          In_CLOSE          -> 1 / Out_TIMEOUT
          In_CONNECT        -> 2 / Out_SYN_FRESH_ZERO_0
    1     In_ACK_RST_V_V_0  -> 1 / Out_TIMEOUT
          In_ACK_PSH_V_V_1  -> 1 / Out_RST_ZERO_ZERO_0
          In_SYN_ACK_V_V_0  -> 1 / Out_RST_ZERO_ZERO_0
          In_RST_V_V_0      -> 1 / Out_TIMEOUT
          In_ACK_V_V_0      -> 1 / Out_RST_ZERO_ZERO_0
          In_FIN_ACK_V_V_0  -> 1 / Out_RST_ZERO_ZERO_0
          In_SYN_V_V_0      -> 1 / Out_ACK_RST_ZERO_NEXT_0
          In_RCV            -> 1 / Out_TIMEOUT
          In_CLOSE          -> 1 / Out_TIMEOUT
          In_CONNECT        -> 1 / Out_TIMEOUT
    2     In_ACK_RST_V_V_0  -> 1 / Out_TIMEOUT
          In_ACK_PSH_V_V_1  -> 2 / Out_TIMEOUT
          In_SYN_ACK_V_V_0  -> 4 / Out_ACK_NEXT_NEXT_0
          In_RST_V_V_0      -> 5 / Out_TIMEOUT
          In_ACK_V_V_0      -> 2 / Out_TIMEOUT
          In_FIN_ACK_V_V_0  -> 2 / Out_TIMEOUT
          In_SYN_V_V_0      -> 6 / Out_ACK_SYN_CURRENT_NEXT_0
          In_RCV            -> 2 / Out_TIMEOUT
          In_CLOSE          -> 3 / Out_TIMEOUT
          In_CONNECT        -> 2 / Out_TIMEOUT
    3     In_ACK_RST_V_V_0  -> 1 / Out_TIMEOUT
          In_ACK_PSH_V_V_1  -> 1 / Out_RST_NEXT_ZERO_0
          In_SYN_ACK_V_V_0  -> 1 / Out_RST_NEXT_ZERO_0
          In_RST_V_V_0      -> 1 / Out_TIMEOUT
          In_ACK_V_V_0      -> 1 / Out_RST_NEXT_ZERO_0
          In_FIN_ACK_V_V_0  -> 1 / Out_RST_NEXT_ZERO_0
          In_SYN_V_V_0      -> 1 / Out_ACK_RST_ZERO_NEXT_0
          In_RCV            -> 3 / Out_TIMEOUT
          In_CLOSE          -> 3 / Out_TIMEOUT
          In_CONNECT        -> 3 / Out_TIMEOUT
    4     In_ACK_RST_V_V_0  -> 1 / Out_TIMEOUT
          In_ACK_PSH_V_V_1  -> 8 / Out_ACK_NEXT_NEXT_0
          In_SYN_ACK_V_V_0  -> 4 / Out_ACK_NEXT_CURRENT_0
          In_RST_V_V_0      -> 1 / Out_TIMEOUT
          In_ACK_V_V_0      -> 4 / Out_TIMEOUT
          In_FIN_ACK_V_V_0  -> 9 / Out_ACK_NEXT_NEXT_0
          In_SYN_V_V_0      -> 4 / Out_TIMEOUT
          In_RCV            -> 10 / Out_TIMEOUT
          In_CLOSE          -> 7 / Out_ACK_FIN_NEXT_CURRENT_0
          In_CONNECT        -> 4 / Out_TIMEOUT
    5     In_ACK_RST_V_V_0  -> 5 / Out_TIMEOUT
          In_ACK_PSH_V_V_1  -> 5 / Out_RST_ZERO_ZERO_0
          In_SYN_ACK_V_V_0  -> 5 / Out_RST_ZERO_ZERO_0
          In_RST_V_V_0      -> 5 / Out_TIMEOUT
          In_ACK_V_V_0      -> 5 / Out_RST_ZERO_ZERO_0
          In_FIN_ACK_V_V_0  -> 5 / Out_RST_ZERO_ZERO_0
          In_SYN_V_V_0      -> 6 / Out_ACK_SYN_FRESH_NEXT_0
          In_RCV            -> 5 / Out_TIMEOUT
          In_CLOSE          -> 1 / Out_TIMEOUT
          In_CONNECT        -> 5 / Out_TIMEOUT
    6     In_ACK_RST_V_V_0  -> 1 / Out_TIMEOUT
          In_ACK_PSH_V_V_1  -> 8 / Out_ACK_NEXT_NEXT_0
          In_SYN_ACK_V_V_0  -> 6 / Out_ACK_NEXT_CURRENT_0
          In_RST_V_V_0      -> 1 / Out_TIMEOUT
          In_ACK_V_V_0      -> 4 / Out_TIMEOUT
          In_FIN_ACK_V_V_0  -> 9 / Out_ACK_NEXT_NEXT_0
          In_SYN_V_V_0      -> 6 / Out_TIMEOUT
          In_RCV            -> 6 / Out_TIMEOUT
          In_CLOSE          -> 7 / Out_ACK_FIN_NEXT_CURRENT_0
          In_CONNECT        -> 6 / Out_TIMEOUT
    7     In_ACK_RST_V_V_0  -> 1 / Out_TIMEOUT
          In_ACK_PSH_V_V_1  -> 1 / Out_RST_NEXT_ZERO_0
          In_SYN_ACK_V_V_0  -> 7 / Out_ACK_NEXT_CURRENT_0
          In_RST_V_V_0      -> 1 / Out_TIMEOUT
          In_ACK_V_V_0      -> 12 / Out_TIMEOUT
          In_FIN_ACK_V_V_0  -> 13 / Out_ACK_NEXT_NEXT_0
          In_SYN_V_V_0      -> 7 / Out_TIMEOUT
          In_RCV            -> 7 / Out_TIMEOUT
          In_CLOSE          -> 7 / Out_TIMEOUT
          In_CONNECT        -> 7 / Out_TIMEOUT
    8     In_ACK_RST_V_V_0  -> 1 / Out_TIMEOUT
          In_ACK_PSH_V_V_1  -> 8 / Out_ACK_NEXT_NEXT_0
          In_SYN_ACK_V_V_0  -> 8 / Out_ACK_NEXT_CURRENT_0
          In_RST_V_V_0      -> 1 / Out_TIMEOUT
          In_ACK_V_V_0      -> 8 / Out_TIMEOUT
          In_FIN_ACK_V_V_0  -> 11 / Out_ACK_NEXT_NEXT_0
          In_SYN_V_V_0      -> 8 / Out_TIMEOUT
          In_RCV            -> 4 / Out_TIMEOUT
          In_CLOSE          -> 1 / Out_ACK_RST_NEXT_CURRENT_0
          In_CONNECT        -> 8 / Out_TIMEOUT
    9     In_ACK_RST_V_V_0  -> 1 / Out_TIMEOUT
          In_ACK_PSH_V_V_1  -> 9 / Out_TIMEOUT
          In_SYN_ACK_V_V_0  -> 9 / Out_ACK_NEXT_CURRENT_0
          In_RST_V_V_0      -> 1 / Out_TIMEOUT
          In_ACK_V_V_0      -> 9 / Out_TIMEOUT
          In_FIN_ACK_V_V_0  -> 9 / Out_TIMEOUT
          In_SYN_V_V_0      -> 9 / Out_TIMEOUT
          In_RCV            -> 9 / Out_TIMEOUT
          In_CLOSE          -> 14 / Out_ACK_FIN_NEXT_CURRENT_0
          In_CONNECT        -> 9 / Out_TIMEOUT
    10    In_ACK_RST_V_V_0  -> 1 / Out_TIMEOUT
          In_ACK_PSH_V_V_1  -> 4 / Out_ACK_NEXT_NEXT_0
          In_SYN_ACK_V_V_0  -> 10 / Out_ACK_NEXT_CURRENT_0
          In_RST_V_V_0      -> 1 / Out_TIMEOUT
          In_ACK_V_V_0      -> 10 / Out_TIMEOUT
          In_FIN_ACK_V_V_0  -> 9 / Out_ACK_NEXT_NEXT_0
          In_SYN_V_V_0      -> 10 / Out_TIMEOUT
          In_RCV            -> 10 / Out_TIMEOUT
          In_CLOSE          -> 7 / Out_ACK_FIN_NEXT_CURRENT_0
          In_CONNECT        -> 10 / Out_TIMEOUT
    11    In_ACK_RST_V_V_0  -> 1 / Out_TIMEOUT
          In_ACK_PSH_V_V_1  -> 11 / Out_TIMEOUT
          In_SYN_ACK_V_V_0  -> 11 / Out_ACK_NEXT_CURRENT_0
          In_RST_V_V_0      -> 1 / Out_TIMEOUT
          In_ACK_V_V_0      -> 11 / Out_TIMEOUT
          In_FIN_ACK_V_V_0  -> 11 / Out_TIMEOUT
          In_SYN_V_V_0      -> 11 / Out_TIMEOUT
          In_RCV            -> 9 / Out_TIMEOUT
          In_CLOSE          -> 1 / Out_ACK_RST_NEXT_CURRENT_0
          In_CONNECT        -> 11 / Out_TIMEOUT
    12    In_ACK_RST_V_V_0  -> 1 / Out_TIMEOUT
          In_ACK_PSH_V_V_1  -> 1 / Out_RST_NEXT_ZERO_0
          In_SYN_ACK_V_V_0  -> 1 / Out_RST_NEXT_ZERO_0
          In_RST_V_V_0      -> 1 / Out_TIMEOUT
          In_ACK_V_V_0      -> 12 / Out_TIMEOUT
          In_FIN_ACK_V_V_0  -> 13 / Out_ACK_NEXT_NEXT_0
          In_SYN_V_V_0      -> 1 / Out_ACK_RST_ZERO_NEXT_0
          In_RCV            -> 12 / Out_TIMEOUT
          In_CLOSE          -> 12 / Out_TIMEOUT
          In_CONNECT        -> 12 / Out_TIMEOUT
    13    In_ACK_RST_V_V_0  -> 1 / Out_TIMEOUT
          In_ACK_PSH_V_V_1  -> 13 / Out_ACK_NEXT_CURRENT_0
          In_SYN_ACK_V_V_0  -> 13 / Out_ACK_NEXT_CURRENT_0
          In_RST_V_V_0      -> 1 / Out_TIMEOUT
          In_ACK_V_V_0      -> 13 / Out_TIMEOUT
          In_FIN_ACK_V_V_0  -> 13 / Out_ACK_NEXT_CURRENT_0
          In_SYN_V_V_0      -> 13 / Out_ACK_NEXT_CURRENT_0
          In_RCV            -> 13 / Out_TIMEOUT
          In_CLOSE          -> 13 / Out_TIMEOUT
          In_CONNECT        -> 13 / Out_TIMEOUT
    14    In_ACK_RST_V_V_0  -> 1 / Out_TIMEOUT
          In_ACK_PSH_V_V_1  -> 3 / Out_TIMEOUT
          In_SYN_ACK_V_V_0  -> 14 / Out_ACK_NEXT_CURRENT_0
          In_RST_V_V_0      -> 1 / Out_TIMEOUT
          In_ACK_V_V_0      -> 3 / Out_TIMEOUT
          In_FIN_ACK_V_V_0  -> 3 / Out_TIMEOUT
          In_SYN_V_V_0      -> 14 / Out_TIMEOUT
          In_RCV            -> 14 / Out_TIMEOUT
          In_CLOSE          -> 14 / Out_TIMEOUT
          In_CONNECT        -> 14 / Out_TIMEOUT
-}
tCPLinuxClient :: MealyAutomaton Int TCPLinuxClientInput TCPLinuxClientOutput
tCPLinuxClient =
    case mkMealyAutomatonTable 15 0 deltaTable lambdaTable of
        Right m -> m
        Left err -> error ("haal-gen: invalid transition table: " ++ err)
  where
    deltaTable =
        "\0\0\0\0\0\0\0\0\1\2\
        \\1\1\1\1\1\1\1\1\1\1\
        \\1\2\4\5\2\2\6\2\3\2\
        \\1\1\1\1\1\1\1\3\3\3\
        \\1\8\4\1\4\9\4\10\7\4\
        \\5\5\5\5\5\5\6\5\1\5\
        \\1\8\6\1\4\9\6\6\7\6\
        \\1\1\7\1\12\13\7\7\7\7\
        \\1\8\8\1\8\11\8\4\1\8\
        \\1\9\9\1\9\9\9\9\14\9\
        \\1\4\10\1\10\9\10\10\7\10\
        \\1\11\11\1\11\11\11\9\1\11\
        \\1\1\1\1\12\13\1\12\12\12\
        \\1\13\13\1\13\13\13\13\13\13\
        \\1\3\14\1\3\3\14\14\14\14"
    lambdaTable =
        "\0\1\1\0\1\1\2\0\0\3\
        \\0\1\1\0\1\1\2\0\0\0\
        \\0\0\4\0\0\0\5\0\0\0\
        \\0\8\8\0\8\8\2\0\0\0\
        \\0\4\7\0\0\4\0\0\6\0\
        \\0\1\1\0\1\1\9\0\0\0\
        \\0\4\7\0\0\4\0\0\6\0\
        \\0\8\7\0\0\4\0\0\0\0\
        \\0\4\7\0\0\4\0\0\10\0\
        \\0\0\7\0\0\0\0\0\6\0\
        \\0\4\7\0\0\4\0\0\6\0\
        \\0\0\7\0\0\0\0\0\10\0\
        \\0\8\8\0\0\4\2\0\0\0\
        \\0\7\7\0\0\7\7\0\0\0\
        \\0\0\7\0\0\0\0\0\0\0"