digraph G { ucloud_api [shape=box]; ucloud_router [shape=box]; ucloud_nat64 [shape=box]; { rank = same; ucloud_api; ucloud_router; ucloud_nat64; } ucloud_api -> REQUEST_IPV6_SLASH_64 [label="Requested by user" style="dotted"]; ucloud_api -> REQUEST_IPV4_ADDRESS [label="Requested by user" style="dotted"]; ucloud_router -> HAS_IPV6_SLASH_64 [label="Adding route" style="dotted"]; ucloud_nat64 -> HAS_IPV4_ADDRESS [label="Adding NAT64" style="dotted"]; ucloud_router -> DELETE_IPV6_SLASH_64 [label="Deleting route" style="dotted"]; ucloud_nat64 -> DELETE_IPV4_ADDRESS [label="Removing NAT64" style="dotted"]; ERROR; ERROR -> DEFAULT; DEFAULT -> REQUEST_IPV6_SLASH_64; REQUEST_IPV6_SLASH_64 -> HAS_IPV6_SLASH_64 [label="If another /64 can be routed"]; REQUEST_IPV6_SLASH_64 -> ERROR [label="If no /64 can be routed"]; DEFAULT -> REQUEST_IPV4_ADDRESS; REQUEST_IPV4_ADDRESS -> HAS_IPV4_ADDRESS; REQUEST_IPV4_ADDRESS -> ERROR [label="If IPv4 address can be added"]; HAS_IPV6_SLASH_64 -> DELETE_IPV6_SLASH_64 -> DEFAULT; HAS_IPV4_ADDRESS -> DELETE_IPV4_ADDRESS -> DEFAULT; }