File: model.dot

package info (click to toggle)
dnsdist 2.0.2-1
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 12,640 kB
  • sloc: cpp: 91,323; javascript: 24,456; sh: 4,744; python: 1,328; makefile: 832; ansic: 816
file content (79 lines) | stat: -rw-r--r-- 2,632 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
digraph {
  graph [fontname = "monospace"];
  node [fontname = "monospace"];
  edge [fontname = "monospace"];

  Drop [label="Drop query"];

  Incoming_Query [label="Incoming Query"];

  Allowed_ACL [label="In the ACL allow list?"];

  Incoming_Query -> Allowed_ACL;
  Allowed_ACL -> Drop [label="no"];
  Allowed_ACL -> Dynamically_Blocked [label="yes"];

  Dynamically_Blocked [label="DynBlocked?"];
  Perform_DynBlock_Action [label="Perform DynBlock action"];
  MatchRules [label="Query matches a rule?"];

  Dynamically_Blocked -> Perform_DynBlock_Action [label="yes"];
  Dynamically_Blocked -> MatchRules [label="no"];

  MatchRules -> "Perform Action" [label="yes"];
  MatchRules -> DeterminePool [label="no"];
  DeterminePool [label="Determine pool and policy"];

  "Perform Action" -> IsResponse;
  "Perform Action" -> MatchRules [label="Action is non-terminal"];
  "Perform Action" -> Drop [label="DropAction()"];

  IsResponse [label="Query is now a response?"];

  IsResponse -> "Return response to client" [label="yes"];
  IsResponse -> DeterminePool [label="no"];

  HasCache [label="Does the pool have a packet cache?"];
  skipCache [label="Should the cache be skipped?"];

  DeterminePool -> HasCache;
  HasCache -> skipCache [label="yes"];
  HasCache -> HasPolicy [label="no"];

  skipCache -> HasPolicy [label="yes"];
  skipCache -> CacheHit [label="no"];

  CacheHit [label="Cache Hit?"];
  CacheHit -> MakeResponse [label="yes"];
  CacheHit -> HasPolicy [label="no"];

  MakeResponse [label="Create Response"];
  MatchCacheRespRule [label="Response matches CacheHitRule?"];
  MakeResponse -> MatchCacheRespRule;

  MatchCacheRespRule -> "Return response to client" [label="no"];
  MatchCacheRespRule -> "Perform CacheHit Action" [label="yes"];
  "Perform CacheHit Action" -> "Return response to client";

  HasPolicy [label="Does the pool have a policy?"];

  HasPolicy -> "Is servFailOnNoPolicy set?" [label="no"];
  "Is servFailOnNoPolicy set?" -> Drop [label="no"];
  "Is servFailOnNoPolicy set?" -> ServFail [label="yes"];

  HasPolicy -> "Send Query to backend server" [label="yes"];

  "Send Query to backend server" -> "Got Response from backend";

  RespRule [label="Response matches a ResponseRule?"];
  "Got Response from backend" -> RespRule;
  RespRule -> "Perform ResponseAction" [label="yes"];
  "Perform ResponseAction" -> RespRule [label="Action was non-terminal"];
  RespRule -> AddToCache [label="no"];
  "Perform ResponseAction" -> AddToCache;
  "Perform ResponseAction" -> Drop [label="DropAction()"];

  AddToCache [label="Add to PacketCache"];

  AddToCache -> "Return response to client";
}