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"