-
Notifications
You must be signed in to change notification settings - Fork 30
/
global.tcl
176 lines (158 loc) · 4.44 KB
/
global.tcl
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
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
package provide testcl 1.0.14
package require log
namespace eval ::testcl {
variable availablePools [list]
variable currentPool
# namespace export accumulate
# namespace export active_members
# namespace export active_nodes
# namespace export after
# namespace export b64decode
# namespace export b64encode
# namespace export call
# namespace export CATEGORY::lookup
# namespace export class
# namespace export client_addr
# namespace export client_port
# namespace export clientside
# namespace export clone
# namespace export cpu
# namespace export crc32
# namespace export decode_uri
# namespace export DEMANGLE::disable
# namespace export DEMANGLE::enable
# namespace export discard
# namespace export domain
# namespace export drop
# namespace export event
# namespace export findclass
# namespace export findstr
# namespace export forward
# namespace export FTP::port
namespace export getfield
# namespace export HA::status
# namespace export htonl
# namespace export htons
# namespace export http_cookie
# namespace export http_header
# namespace export http_host
# namespace export http_method
# namespace export http_uri
# namespace export http_version
# namespace export iFile
# namespace export imid
# namespace export ip_protocol
# namespace export ip_tos
# namespace export ip_ttl
# namespace export lasthop
# namespace export link_qos
# namespace export listen
# namespace export llookup
# namespace export local_addr
namespace export log
# namespace export matchclass
# namespace export md5
# namespace export members
# namespace export nexthop
# namespace export node
# namespace export nodes
# namespace export ntohl
# namespace export ntohs
# namespace export Operators
# namespace export peer
# namespace export persist
namespace export pool
# namespace export priority
# namespace export rateclass
# namespace export redirect
# namespace export reject
# namespace export relate_client
# namespace export relate_server
# namespace export remote_addr
# namespace export RESOLV::lookup
# namespace export return
# namespace export rmd160
# namespace export server_addr
# namespace export server_port
# namespace export serverside
# namespace export session
# namespace export sha1
# namespace export sha256
# namespace export sha384
# namespace export sha512
# namespace export sharedvar
# namespace export SMTPS::disable
# namespace export SMTPS::enable
# namespace export snat
# namespace export snatpool
# namespace export substr
# namespace export table
# namespace export tcl_platform
# namespace export timing
# namespace export TMM::cmp_count
# namespace export TMM::cmp_group
# namespace export TMM::cmp_unit
# namespace export traffic_group
# namespace export translate
# namespace export urlcatquery
# namespace export use
# namespace export virtual
# namespace export vlan_id
# namespace export when
# namespace export whereis
}
# testcl::getfield --
#
# stub for the iRule GLOBAL::getfield - Splits a string on a character or string. and returns the string corresponding to the specific field.
#
# Arguments:
# optional new uri string
#
# Side Effects:
# None.
#
# Results:
# current uri string
#
# Usage syntax:
# HTTP::uri [<string>]
#
proc ::testcl::getfield { str delim ind } {
log::log debug "GLOBAL::getfield $str $delim $ind invoked"
return [lindex [split $str $delim] [expr {$ind - 1}]]
}
# testcl::log --
#
# stub for the iRule GLOBAL::log - Generates and logs a message to the syslog-ng utility.
#
# Arguments:
# facility.level - facility is ignored, level is passed through to the underlying test logger
# msg - the message to log
#
# Side Effects:
# None.
#
# Usage syntax:
# log [-noname] <facility>.<level> <message>
#
proc ::testcl::log { faclvl msg } {
set level [lindex [split $faclvl "."] 1]
if { $level eq "" } {
set level "info"
}
log::log $level $msg
}
proc ::testcl::pool { name } {
variable availablePools
variable currentPool
log::log debug "Available pools => $availablePools"
log::log debug "Target pool name => $name"
set rc [catch {lsearch -exact $availablePools $name} found]
log::log debug "rc=$rc found=$found"
if { $found >= 0} {
set currentPool $name
log::log debug "Current pool is now => $currentPool"
return -code 0 "pool $name"
}
return -code 1000 "pool $name"
}