Localizador zero-ou-um do BIG-IP
Zero ou um? Veja onde cada comando Tcl, comando de iRules, objeto de configuração, API e ferramenta do BIG-IP começa a contar, com as palavras da própria F5 e a data em que cada fonte foi lida, e traduza uma posição para o número de cada comando, executando-o. Local, sem rede.
RedesCada lugar do BIG-IP encontrado que conta a partir de 0 ou de 1, com o que é contado, como chegar ao primeiro e ao último, o que volta quando não há nada, e as fontes. Filtre por onde a contagem começa, ou pesquise.
Regras práticas
- As posições do Tcl contam a partir de 0, e
endé o último índice, o comprimento menos um. - Os números no estilo de campo da F5 contam a partir de 1: campos de
getfield, profundidades deURI::path, índices de path-segment das políticas LTM, o antigomatchclass. - Contadores devolvem 1 para o primeiro item:
HTTP::request_num,table incr. - Muitos zeros são valores, não posições: domínio de roteamento 0, porta 0, connection-limit 0,
SSL::verify_result0, e o 0.0 do tcpdump. - O menor vai primeiro quase sempre (prioridade de evento, ordinais de política, ordem do GTM, severidade do syslog), exceto nos grupos de prioridade de pool, onde o maior ganha.
- Num
if, 0 é falso e qualquer outro número é verdadeiro, inclusive -1: compare um índice com>= 0em vez de testá-lo, e guarde suas próprias flags como 0 ou 1, como pede o iRules Style Guide do DevCentral.
Mostrando 76 de 76.
Tcl dentro de iRules (22)
string index0 Começa em 0string index conta caracteres a partir de 0: o índice 0 é o primeiro caractere, end o último e end-1 o anterior. Um índice abaixo de 0, ou igual ou maior que o comprimento, devolve uma string vazia, não um erro.
- Conta
- caracteres
- Primeiro
0- Último
end- Quando não há nada
""
Exemplo string index abcd end-1 devolve c
string range0 Começa em 0string range recebe um índice inicial e um final, ambos contados a partir de 0 e ambos incluídos: string range $s 0 2 devolve três caracteres. Um índice inicial abaixo de 0 é lido como 0, e um índice final além do fim é lido como end.
- Conta
- caracteres, com as duas pontas incluídas
- Primeiro
0- Último
end- Quando não há nada
""
Exemplo string range abcdef 2 3 devolve cd
Atenção Como o índice final está incluído, o resultado tem o final menos o inicial mais um caracteres. Os N primeiros caracteres são string range $s 0 N-1, não N.
string first, string last0 Começa em 0string first e string last devolvem o índice onde o texto começa, contado a partir de 0, ou -1 quando ele não está lá. O índice de início opcional de string first (e o índice final de string last) usa a mesma numeração.
- Conta
- caracteres
- Primeiro
0- Quando não há nada
-1
Exemplo string first q xyz devolve -1
Atenção Num if, 0 é falso e qualquer outro número é verdadeiro. Então if [string first ...] pula o corpo quando o texto está bem no início (índice 0) e roda o corpo quando o texto não existe (-1). Teste [string first ...] >= 0 em vez disso.
string compare=0 Zero é um valorstring compare devolve -1, 0 ou 1: 0 significa que as duas strings são iguais, -1 que a primeira vem antes da segunda na ordenação, e 1 que vem depois.
- Conta
- um resultado de comparação, não uma posição
Exemplo string compare a b devolve -1
Atenção Lido como condição, 0 é falso: if [string compare $a $b] roda quando as strings são diferentes. Para igualdade use string equal ou o operador eq, que dão 1 quando as strings são iguais.
true and false in if and expr=0 Zero é um valorNa condição de um if, e sempre que expr lê um valor como verdadeiro ou falso, 0 é falso e qualquer outro número é verdadeiro, inclusive -1. O Tcl também aceita as palavras true, yes e on, e false, no e off, em maiúsculas ou minúsculas e abreviadas, desde que a abreviação não seja ambígua: n, t e of funcionam, enquanto o dá erro. O iRules Style Guide do DevCentral pede que você guarde estado só como 0 ou 1.
- Conta
- uma condição, não uma posição
Exemplo expr {-1 ? "taken" : "skipped"} devolve taken
Atenção string is true e string is false seguem regras diferentes das do if: aceitam só 0, 1 e as palavras, então string is true -1 devolve 0 embora o if trate -1 como verdadeiro. Sem -strict, também devolvem 1 para uma string vazia, que o if recusa com um erro.
string replace, wordstart, wordend, is -failindex0 Começa em 0string replace recebe índices inicial e final como string range; string wordstart e string wordend recebem um índice e devolvem outro; string is com -failindex guarda o índice do primeiro caractere que falhou. Todos contam a partir de 0, e os argumentos de índice aceitam end.
- Conta
- caracteres
- Primeiro
0- Último
end
Exemplo string replace abcdef 1 2 XY devolve aXYdef
end, end-N← Conta pela direitaend é o último índice, ou seja, o comprimento menos um, e end-1 é o anterior. Funciona em string index, string range, string replace, lindex, lrange, linsert, lreplace e lsort -index.
- Conta
- posições a partir do fim
- Último
end
Exemplo lindex {a b c} end-1 devolve b
Atenção end não é o comprimento: numa string de 4 caracteres, end é 3. end-0 é o mesmo que end.
lindex0 Começa em 0lindex conta elementos a partir de 0: o índice 0 é o primeiro elemento e end o último. Um índice negativo, ou igual ou maior que o número de elementos, devolve uma string vazia.
- Conta
- elementos de lista
- Primeiro
0- Último
end- Quando não há nada
""
Exemplo lindex {a b c} 0 devolve a
lrange0 Começa em 0lrange devolve os elementos do inicial ao final, contados a partir de 0 e ambos incluídos: lrange $l 0 1 são os dois primeiros. Um índice inicial abaixo de 0 é lido como 0, e um final além do fim como end.
- Conta
- elementos de lista, com as duas pontas incluídas
- Primeiro
0- Último
end- Quando não há nada
""
Exemplo lrange {a b c d e} 0 1 devolve a b
lsearch0 Começa em 0lsearch devolve o índice do primeiro elemento que casa, contado a partir de 0, ou -1 quando nada casa. -start recebe um índice na mesma numeração.
- Conta
- elementos de lista
- Primeiro
0- Quando não há nada
-1
Exemplo lsearch {a b c} z devolve -1
Atenção A mesma armadilha de string first: um casamento no índice 0 é falso num if, e nenhum casamento (-1) é verdadeiro. Compare o resultado com -1.
linsert, lreplace, lset0 Começa em 0linsert, lreplace e lset recebem índices contados a partir de 0. linsert em 0 (ou abaixo) coloca os novos elementos primeiro, e em end (ou além do fim) acrescenta no fim.
- Conta
- elementos de lista
- Primeiro
0- Último
end
Exemplo linsert {a b c} 0 X devolve X a b c
lsort -index0 Começa em 0lsort -index ordena uma lista de listas por um elemento de cada sublista, contado a partir de 0: -index 1 ordena pelo segundo elemento. end e end-N são aceitos.
- Conta
- elementos dentro de cada sublista
- Primeiro
0- Último
end
Exemplo lsort -index 1 {{a 2} {b 1}} devolve {b 1} {a 2}
split, then lindex0 Começa em 0split cria uma lista, e lindex a conta a partir de 0. Quando a string começa com o separador, o primeiro elemento é o texto vazio antes dele.
- Conta
- elementos da lista depois da divisão
- Primeiro
0- Quando não há nada
""
Exemplo lindex [split /api/v2/users /] 1 devolve api
Atenção Um caminho começa com barra, então split /api/v2/users / dá quatro elementos, o primeiro vazio: o primeiro segmento, api, é o elemento 1, não o 0.
regexp -indices, -start0 Começa em 0Com -indices, regexp guarda cada casamento como um par de índices, o primeiro e o último caractere, contados a partir de 0 e ambos incluídos. Um grupo que não participou do casamento recebe -1 -1. -start recebe um índice na mesma numeração.
- Conta
- caracteres
- Primeiro
0- Quando não há nada
-1 -1
Exemplo regexp -indices {(b+)} abbbc m; set m devolve 1 3
regexp sub-matches, regsub \1 to \91 Começa em 1Os grupos de captura contam a partir de 1, na ordem em que os parênteses de abertura aparecem: a primeira variável de sub-casamento de regexp recebe o grupo 1, e regsub o escreve como \1. O grupo 0 é o casamento inteiro: a variável de casamento de regexp, e & ou \0 em regsub.
- Conta
- grupos de captura
- Primeiro
\1
Exemplo regsub {(a)(b)} ab {\2\1} devolve ba
Atenção Os números de grupo começam em 1 enquanto as posições na string começam em 0: na mesma chamada regexp -indices, o grupo 1 pode informar a posição 0.
format and scan %n$1 Começa em 1Em format e scan, um especificador de posição como %2$s escolhe um argumento (ou uma variável) pelo número, e 1 é o primeiro. Quando um especificador é posicional, todos precisam ser.
- Conta
- argumentos e variáveis
- Primeiro
%1$
Exemplo format {%2$s %1$s} a b devolve b a
scan %nn Uma contagem, não uma posição%n guarda quanto da entrada scan já leu, então é igual ao índice onde o resto da string começa e pode alimentar string range.
- Conta
- entrada lida até ali
Exemplo scan "ab cd" {%s%n} w n; set n devolve 2
Atenção No Tcl 8.4.6 essa quantidade é contada em bytes de UTF-8, não em caracteres: depois de um caractere como é ela passa à frente de string range (o explicador de scan mostra isso).
clock format %w %H %M %S %U %W0 Começa em 0Estes campos de clock format começam em 0: %w é o dia da semana com domingo 0, %H a hora de 00 a 23, %M e %S de 00 a 59, e %U e %W a semana do ano a partir de 00 (no tclsh 8.4.6, 1 de janeiro de 1970, uma quinta-feira, é a semana 00 nos dois).
- Conta
- dias da semana, horas, minutos, segundos, semanas
- Primeiro
0 / 00
Exemplo clock format 0 -format {%w %H %U %W} -gmt 1 devolve 4 00 00 00
clock format %u %d %e %j %m %V %I1 Começa em 1Estes campos de clock format começam em 1: %u é o dia da semana com segunda-feira 1 e domingo 7, %d e %e o dia do mês, %j o dia do ano a partir de 001, %m o mês a partir de 01, %I o relógio de 12 horas a partir de 01, e %V a semana ISO 8601 a partir de 01.
- Conta
- dias da semana, dias, meses, semanas
- Primeiro
1 / 01 / 001
Exemplo clock format 0 -format {%u %d %j %m %V} -gmt 1 devolve 4 01 001 01 01
Atenção %w e %u numeram o mesmo dia de forma diferente: domingo é 0 em %w e 7 em %u, enquanto segunda-feira é 1 nos dois.
binary scan @0 Começa em 0Em binary scan, @ leva o cursor a uma posição absoluta em bytes, e a posição 0 é o primeiro byte. Uma posição além do fim deixa o cursor depois do último byte.
- Conta
- bytes
- Primeiro
@0
Exemplo binary scan ABC @1a1 x; set x devolve B
info level, uplevel, upvar0 Começa em 0info level é 0 no topo (o nível global) e 1 dentro de um proc chamado dali. uplevel e upvar recebem um nível relativo, em que 1 (quem chamou) é o padrão, ou um absoluto escrito com #: #0 é o nível global.
- Conta
- níveis da pilha de chamadas
- Primeiro
#0
Exemplo proc lv {} { info level }; lv devolve 1
expr {int(rand()*N)}0 Começa em 0rand() devolve um valor entre 0 e 1, nunca o próprio 1, então int(rand()*N) é um número inteiro de 0 a N-1: exatamente as posições de lindex numa lista com N elementos.
- Conta
- posições de lista
- Primeiro
0- Último
N-1
Exemplo expr {int(rand()*3)} devolve 0, 1, 2
Comandos que a F5 acrescenta às iRules (30)
getfield1 Começa em 1getfield divide uma string num caractere ou numa string e devolve um campo. Página da F5: o número do campo começa em 1, então o campo 1 é o texto antes do primeiro separador.
- Conta
- campos
- Primeiro
1
Exemplo getfield "www.example.com:8080" ":" 1 devolve www.example.com
Atenção Quando a string começa com o separador, o campo 1 é o texto vazio antes dele, então o primeiro segmento de um caminho é o campo 2. A página da F5 não tem exemplo com separador no início; o tradutor sinaliza isso.
substr0 Começa em 0substr começa num índice contado a partir de 0: a página da F5 diz que o skip é o índice do primeiro caractere devolvido, onde 0 é o primeiro caractere. O terminador é um comprimento ou um texto antes do qual parar.
- Conta
- caracteres
- Primeiro
0
Exemplo substr "abcdefghijklm" 2 4 devolve cdef
As páginas da F5 discordam A regra da F5 diz que um terminador numérico devolve essa quantidade de caracteres, então 0 não devolveria nada, mas o exemplo publicado com 0 devolve o resto da string, e a página da API marca essa linha como não funcionando no 11.5.4 e no 11.6.0.
findstr0 Começa em 0findstr encontra o texto procurado e então pula uma quantidade de caracteres contada a partir do primeiro caractere do casamento: 0, o padrão, devolve o próprio casamento. Para começar logo depois do texto procurado, pule o comprimento dele.
- Conta
- caracteres a partir do casamento
- Primeiro
0
Exemplo findstr "aaa123456xxyz" "aaa" 3 "xyz" devolve 123456x
Atenção substr conta o skip a partir do início da string e findstr a partir do início do casamento, embora a página de substr da F5 diga que os dois usam esses argumentos do mesmo jeito.
domain← Conta pela direitadomain devolve os últimos N rótulos de um nome com pontos, contados a partir da direita: no exemplo da F5, 1 dá com e 2 dá domain.com. Uma contagem maior que o número de rótulos devolve o nome inteiro.
- Conta
- rótulos, a partir da direita
- Último
1
Exemplo domain www.sub.my.domain.com 2 devolve domain.com
Atenção Num nome como www.sub.my.domain.co.uk, 2 devolve co.uk, não o nome da organização (exemplo da própria F5).
URI::path1 Começa em 1URI::path com uma profundidade inicial (e uma final) devolve parte do caminho de diretórios, e a profundidade 1 é o primeiro diretório: a página da F5 diz que o intervalo exige início >= 1, e o exemplo mostra que 0 gera um erro de Tcl.
- Conta
- profundidade de diretório
- Primeiro
1
Exemplo URI::path "/path/to/file.ext?param=value" 2 devolve /to/
As páginas da F5 discordam O exemplo da F5 se contradiz: um comentário diz que a profundidade é 3 onde a saída mostra 2, um início de 3 devolve / enquanto um início de 4 devolve /path/to/, e a cópia da página no tmsh omite essas linhas.
HTTP::request_num, HTTP2::requests1 Começa em 1HTTP::request_num conta as transações HTTP da conexão atual incluindo a atual, então a primeira requisição devolve 1. HTTP2::requests conta do mesmo jeito na sessão HTTP/2 e devolve 0 quando o HTTP/2 não está ativo.
- Conta
- requisições na conexão
- Primeiro
1
Exemplo HTTP::request_num devolve 1
HTTP::header at, HTTP::header value0 Começa em 0HTTP::header at devolve o nome do cabeçalho num índice que começa em zero, então 0 é a primeira linha de cabeçalho. Pedir o valor de um cabeçalho que não existe devolve uma string vazia.
- Conta
- linhas de cabeçalho
- Primeiro
0- Quando não há nada
""
Exemplo HTTP::header value header_1 devolve value_3
Atenção Quando um cabeçalho aparece mais de uma vez, HTTP::header value trabalha com o último, enquanto SIP::header sem índice devolve o primeiro. HTTP::header values devolve todos.
HTTP::payload, TCP::payload, UDP::payload, SSL::payload0 Começa em 0Os comandos de payload recebem um deslocamento em bytes contado a partir de 0: a página de HTTP::payload da F5 diz que, para substituir o payload inteiro, o deslocamento deve ser 0, e as páginas de payload de TCP, UDP e SSL mostram a mesma base nos exemplos.
- Conta
- bytes
- Primeiro
0
Exemplo TCP::payload replace 0 [TCP::payload length] "" devolve o payload TCP coletado fica vazio (exemplo da F5)
TCP::offsetn Uma contagem, não uma posiçãoApesar do nome, TCP::offset não é uma posição: a página da F5 diz que ele devolve o número de bytes retidos na memória por TCP::collect.
- Conta
- bytes coletados (uma contagem)
Exemplo TCP::offset devolve o número de bytes coletados até agora
Atenção Use-o como comprimento, não como deslocamento do último byte: com N bytes retidos, o último fica no deslocamento N menos 1.
SSL::cert, SSL::cert issuer0 Começa em 0SSL::cert e SSL::cert issuer recebem um índice a partir de 0: a página da F5 diz que zero indica o primeiro certificado da cadeia enviada pelo par e um o seguinte. SSL::cert count é o total, então o último índice é a contagem menos 1.
- Conta
- certificados na cadeia do par
- Primeiro
0- Último
[SSL::cert count] - 1
Exemplo SSL::cert 0 devolve o primeiro certificado enviado pelo par (os exemplos da F5 o usam como o próprio certificado do cliente)
As páginas da F5 discordam Um dos exemplos da F5 tem o comentário "Check if there is more than one client cert" acima de um teste de contagem maior que 0, o que significa pelo menos um.
SSL::extensions -index0 Começa em 0SSL::extensions -index devolve a N-ésima extensão, com índice a partir de zero nas palavras da F5, e SSL::extensions count é quantas chegaram.
- Conta
- extensões TLS
- Primeiro
0- Último
[SSL::extensions count] - 1
Exemplo SSL::extensions -index 0 devolve a primeira extensão recebida, em bytes
Atenção O próprio exemplo da F5 percorre a partir de 0 e imprime o número mais um para pessoas: conte a partir de 0 no código e a partir de 1 nas mensagens.
class element, class match/search -index0 Começa em 0Com -index, class match e class search devolvem índices de entradas, e class element recebe um; o exemplo da F5 lista os três primeiros casamentos como 0 1 2. Sem opção, class match devolve 1 quando casa e 0 quando não casa.
- Conta
- entradas do data group
- Primeiro
0
Exemplo class search -all -index string_dg starts_with "abc" devolve 0 1 2
Atenção A F5 avisa que esses índices não têm garantia de continuar os mesmos quando o data group muda, nem entre eventos.
As páginas da F5 discordam Um comentário de exemplo na página da F5 chama lindex $element 1 de chave, mas no par de nome e valor esse índice é o valor.
matchclass (legacy)1 Começa em 1O antigo matchclass devolve o índice da linha que casou contado a partir de 1, e 0 quando nada casa, então o resultado funciona como condição. A página da F5 lembra que lindex conta a partir de 0, daí o menos 1 no exemplo.
- Conta
- linhas do data group
- Primeiro
1- Quando não há nada
0
Exemplo lindex $::color [expr {$idx - 1}] devolve a linha que casou, do antigo data group em forma de lista
As páginas da F5 discordam A mesma página afirma que nenhum casamento devolve 0, mas o exemplo testa o resultado contra -1.
TMM::cmp_unit, TMM::cmp_group0 Começa em 0TMM::cmp_unit devolve o número (0-x) da CPU, a instância de TMM, que executa a regra, e o exemplo da F5 chama 0 de primeira instância de TMM. TMM::cmp_group devolve o grupo (0-x), que é sempre 0 em plataformas que não são chassis. TMM::cmp_count é quantos TMMs rodam.
- Conta
- instâncias e grupos de TMM
- Primeiro
0- Último
[TMM::cmp_count] - 1
Exemplo TMM::cmp_unit devolve 0 na primeira instância de TMM
SIP::route, SIP::record-route, SIP::via0 Começa em 0SIP::route e SIP::record-route recebem um índice numérico que começa em zero (ou a palavra top), e SIP::via também recebe um índice a partir de zero, segundo a cópia da página no tmsh. Sem índice, SIP::via devolve o primeiro Via.
- Conta
- entradas de cabeçalho SIP
- Primeiro
0
Exemplo SIP::via 0 devolve a parte de protocolo do primeiro cabeçalho Via
DIAMETER::avp ... index0 Começa em 0DIAMETER::avp escolhe o N-ésimo AVP com um código pelo índice que começa em zero, e omitir o índice funciona exatamente como o índice 0, o primeiro.
- Conta
- AVPs com o mesmo código
- Primeiro
0
Exemplo DIAMETER::avp data get 8 octetstring index 1 vendor-id 3375 devolve mno
RADIUS::avp ... index0 Começa em 0Os exemplos de RADIUS::avp da F5 leem atributos repetidos com index 0, 1, 2 e assim por diante, e param no primeiro resultado vazio. A página nunca diz a base com palavras.
- Conta
- ocorrências do atributo
- Primeiro
0- Quando não há nada
""
Exemplo RADIUS::avp 26 "string" index 0 vendor-id 10415 vendor-type 13 devolve o primeiro atributo específico de fornecedor que casa, como string
MESSAGE::field value0 Começa em 0MESSAGE::field value recebe um índice opcional que a página da F5 chama de baseado em 0. Um campo que não existe devolve uma string vazia, e a ordem dos campos repetidos depende do protocolo.
- Conta
- ocorrências do campo
- Primeiro
0- Quando não há nada
""
Exemplo MESSAGE::field value Via 0 devolve o primeiro campo Via da mensagem
NAME::response address0 Começa em 0NAME::response address recebe um índice de 0 a 15, inclusive; sem índice devolve a lista de até 16 registros, e nulo quando nada voltou. A F5 o descontinuou na versão 15.1 em favor dos comandos RESOLVER e DNSMSG.
- Conta
- registros de endereço
- Primeiro
0- Último
15- Quando não há nada
null
Exemplo NAME::response address 0 devolve o primeiro endereço devolvido por NAME::lookup
JSON::array (BIG-IP 21.0)0 Começa em 0Os comandos JSON::array, que a F5 lista como introduzidos no BIG-IP 21.0.0, contam posições a partir de 0: inserir num índice igual ao tamanho acrescenta no fim, e remover desliza os valores seguintes uma posição para baixo. A página nunca escreve a base com palavras.
- Conta
- valores do array
- Primeiro
0- Último
[JSON::array size $ary] - 1
Exemplo JSON::array get $ary 0 devolve o primeiro valor do array
RESOLV::lookup, DNSMSG::section0 Começa em 0RESOLV::lookup e DNSMSG::section devolvem listas Tcl, então lindex 0 é o primeiro item; a página de RESOLV::lookup da F5 usa exatamente isso para obter um único endereço.
- Conta
- endereços e registros
- Primeiro
0- Último
end- Quando não há nada
""
Exemplo lindex [RESOLV::lookup $hostname] 0 devolve o primeiro endereço devolvido pela consulta
As páginas da F5 discordam O exemplo de DNSMSG::record da F5 guarda lindex $answer 1 numa variável chamada first_rr, mas o índice 1 é o segundo registro.
whereis0 Começa em 0whereis devolve uma lista Tcl com o continente, o país e o estado, nessa ordem, então o exemplo da F5 lê o continente com lindex 0 e o país com lindex 1.
- Conta
- posições da lista
- Primeiro
0
Exemplo lindex [whereis [IP::client_addr]] 1 devolve o código de país do cliente
active_members -list, members -list0 Começa em 0active_members -list devolve uma lista Tcl de pares de endereço e porta dos membros ativos, e members -list cobre todos os membros, então lindex 0 é o primeiro par da lista.
- Conta
- membros do pool
- Primeiro
0
Exemplo lindex [active_members -list my_pool] 0 devolve 192.168.1.1 80
Atenção As páginas da F5 não dizem em que ordem os membros vêm, então o primeiro par não é um membro específico: não baseie lógica numa posição.
table incr1 Começa em 1table incr começa uma chave inexistente em 0, soma 1 a menos que se diga outro valor, e devolve o valor depois da soma, então a primeira chamada devolve 1.
- Conta
- um contador
- Primeiro
1
Exemplo table incr hits devolve 1
STATS::incr fields1 Começa em 1A página da F5 diz que os campos de um perfil Statistics são numerados de 1 a 32, mas STATS::incr recebe o nome do campo, não o número.
- Conta
- campos de um perfil Statistics
- Primeiro
1- Último
32
Exemplo STATS::incr my_stats hits devolve o campo hits do perfil my_stats sobe 1
when ... priority0 Começa em 0A prioridade de um evento vai de 0 a 1000, inclusive, tem 500 como padrão, e números menores rodam primeiro, então a prioridade 0 roda antes dos números maiores nesse evento. O iRules Style Guide do DevCentral pede uma prioridade em todo evento, com 500 quando não houver outro ponto de partida.
- Conta
- valores de prioridade de evento
- Primeiro
0- Último
1000
Exemplo when HTTP_REQUEST priority 0 { ... } devolve este corpo de HTTP_REQUEST roda antes dos que estão no padrão 500
As páginas da F5 discordam A mesma página da F5 também diz que a prioridade pode ser atribuída entre 1 e 1000.
MR::message clone IDs1 Começa em 1MR::message clone -count numera os novos clones a partir da contagem anterior de clones mais 1, então o primeiro clone de uma mensagem recebe o ID 1; o original não tem ID de clone (uma string vazia).
- Conta
- clones de mensagem
- Primeiro
clone_count_before + 1
Exemplo MR::message clone -count 2 devolve dois clones, com IDs 1 e 2, para uma mensagem que não tinha nenhum
As páginas da F5 discordam A página da F5 descreve clone_count como o número de clones incluindo o original e, na mesma frase, diz que ele devolve 0 quando não há clones.
MR::connection_instance0 Começa em 0MR::connection_instance devolve um texto na forma instância of total, e a página da F5 diz que conexões de entrada devolvem 0 of 1: a instância conta a partir de 0.
- Conta
- instâncias de conexão
- Primeiro
0
Exemplo MR::connection_instance devolve 0 of 1
SSL::verify_result=0 Zero é um valorSSL::verify_result devolve 0 para X509_V_OK, que a tabela da F5 descreve como operação bem-sucedida; os outros números são códigos de erro de verificação.
- Conta
- um código de resultado, não uma posição
Exemplo SSL::verify_result devolve 0
Atenção Lido como condição, o sucesso é falso: if [SSL::verify_result] roda quando a verificação falhou. Compare com 0 para dizer o que você quer.
LB::server priority, LB::server route_domain=0 Zero é um valorLB::server priority devolve 1 quando o membro do pool não tem prioridade configurada, e LB::server route_domain devolve nulo quando o domínio de roteamento é 0, o padrão.
- Conta
- um valor de prioridade e um domínio de roteamento
Exemplo LB::server priority devolve 1
As páginas da F5 discordam A própria configuração do membro do pool, priority-group, tem 0 como padrão na referência do tmsh, então o 1 que LB::server informa para um membro não configurado não bate com o padrão configurado. Não testado num BIG-IP.
Objetos de configuração (12)
route domain ID (%ID)0 Começa em 0O domínio de roteamento 0 é o padrão: o guia de roteamento da F5 diz que, sem domínios criados, toda rota pertence ao domínio 0, e que um endereço sem %ID usa o domínio padrão da partição, ou o domínio 0 em Common. A referência do tmsh acrescenta que, quando nenhuma rota é encontrada, o sistema procura no domínio 0.
- Conta
- domínios de roteamento
- Primeiro
0
Exemplo 10.10.10.30%2:80 devolve um membro de pool em 10.10.10.30, porta 80, no domínio de roteamento 2
pool member priority-group, min-active-members0 Começa em 0O priority-group de um membro de pool vai de 0 a 65535 e tem 0 como padrão, e números maiores recebem tráfego primeiro, então 0 é o grupo mais baixo: seus membros só recebem tráfego quando todos os membros dos grupos mais altos estão indisponíveis. Um min-active-members de 0 desliga a ativação por grupo de prioridade.
- Conta
- grupos de prioridade
- Primeiro
0- Último
65535
Exemplo priority-group 0 devolve o grupo de prioridade mais baixo (o padrão)
Atenção Aqui o número maior ganha, o contrário da prioridade de evento, dos ordinais de política LTM e da ordem do GTM, onde o número menor vai primeiro.
ratio (pool member, wide IP pool, GTM member)1 Começa em 1Os pesos de ratio têm 1 como padrão para membros de pool LTM, e o esquema AS3 também dá 1 como padrão para membros de pool GSLB; ele aceita de 0 a 100 para um membro de pool LTM.
- Conta
- peso de balanceamento
- Primeiro
1
Exemplo ratio 1 devolve o peso padrão
connection-limit, queue-depth-limit, reselect-tries=0 Zero é um valorNesses campos 0 não é um tamanho, significa sem limite: um connection-limit de 0 permite conexões ilimitadas em servidores virtuais, membros de pool e domínios de roteamento, um queue-depth-limit de 0 significa sem limite, e reselect-tries 0 significa que o sistema não tenta outro membro do pool.
- Conta
- limites
Exemplo connection-limit 0 devolve sem limite de conexões
virtual server port 0 (any)=0 Zero é um valorA porta 0 num servidor virtual significa todas as portas: a F5 descreve um servidor virtual curinga padrão como um que usa a porta 0 e atende o tráfego de todos os serviços. Os exemplos do tmsh escrevem a porta como any.
- Conta
- portas de serviço
Exemplo destination 11.11.11.12:any devolve um servidor virtual em 11.11.11.12 para todas as portas
ltm policy rule ordinal, conditions and actions0 Começa em 0Dentro de uma regra de política LTM, condições e ações são numeradas 0, 1 e assim por diante, como mostra o exemplo de tmsh da F5. As regras têm um ordinal: o menor valor vem primeiro, e o artigo do DevCentral sobre estratégias de casamento diz que 0 é o padrão e não aparece.
- Conta
- regras, condições e ações
- Primeiro
0
Exemplo conditions add { 0 { http-host host not values { askf5.com } request } } devolve a primeira condição da regra
As páginas da F5 discordam A referência do iControl REST descreve o ordinal como um inteiro positivo, enquanto o padrão é 0.
ltm policy path-segment index, unnamed-query-param index1 Começa em 1Numa condição de política LTM, path-segment index e unnamed-query-param index contam a partir de 1, e valores negativos contam a partir da direita.
- Conta
- segmentos de caminho e parâmetros de query
- Primeiro
1- Último
-1
Exemplo http-referer path-segment index 2 values { to } devolve a condição olha o segundo segmento do caminho do Referer
Atenção O primeiro segmento de /api/v2 é o index 1 numa política e o elemento 1 depois de split no Tcl, por motivos diferentes: a política conta a partir de 1, enquanto o Tcl conta a partir de 0 e tem um elemento vazio antes da barra inicial.
ltm policy-strategy precedence ordinal1 Começa em 1A tabela de precedência de uma estratégia de política LTM começa em 1, e um valor menor é uma precedência maior: best-match a usa para decidir qual condição que casou é a mais específica.
- Conta
- níveis de precedência
- Primeiro
1
Exemplo 1 request tcp port devolve a maior precedência da tabela
GTM wide IP pool order, pool member-order0 Começa em 0No BIG-IP DNS, os pools de um wide IP e os membros de um pool têm uma ordem que começa em 0: o laboratório da F5 cria o primeiro pool com order 0, e o esquema AS3 tem memberOrder 0 como padrão. O Global Availability usa o primeiro pool da lista enquanto ele estiver disponível.
- Conta
- pools e membros, em ordem
- Primeiro
0
Exemplo pools add { www.example.com_pool { order 0 } } devolve o primeiro pool do wide IP
VLAN tag1 Começa em 1Uma tag de VLAN vai de 1 a 4094: a faixa começa em 1. A referência do tmsh também aceita 4096, uma tag especial que não é usada no caminho de processamento dos pacotes e ajuda na configuração de virtual-wire.
- Conta
- IDs de VLAN
- Primeiro
1- Último
4094
Exemplo tag 4094 devolve a maior tag comum
traffic-group-1, traffic group unit ID1 Começa em 1Todo BIG-IP vem com traffic-group-1, o grupo flutuante ao qual objetos flutuantes novos entram por padrão, e traffic-group-local-only: o grupo flutuante é numerado a partir de 1. O unit ID de um grupo de tráfego fica entre 1 e 15.
- Conta
- grupos de tráfego
- Primeiro
1- Último
15
Exemplo traffic-group-1 devolve o grupo de tráfego flutuante pré-configurado
APM acl-order0 Começa em 0acl-order posiciona uma ACL do APM na lista de ACLs, e um número menor fica mais acima na lista.
- Conta
- posições de ACL
- Primeiro
0
Exemplo create acl MyACL { acl-order 3 ... } devolve a posição de MyACL na lista de ACLs
As páginas da F5 discordam A referência do tmsh descreve acl-order 3 como a terceira ACL da lista, o que conta a partir de 1, enquanto a documentação do módulo Ansible da F5 diz que o menor número, 0, é o do topo, o que faz de 3 a quarta.
Plataforma e hardware (5)
interface names (1.1, 1/1.1, mgmt)1 Começa em 1As interfaces do BIG-IP se chamam slot.porta, como 1.1, 1.2 e 2.1 nos exemplos da F5, então os dois números começam em 1. Num VIPRION o slot da lâmina vem primeiro, como em 1/1.2 (slot 1, interface 1.2), e a interface de gerência se chama mgmt.
- Conta
- interfaces
- Primeiro
1.1
Exemplo create vlan my_vlan interfaces add { 1.2 1.3 1.4 } devolve uma VLAN nas interfaces 1.2, 1.3 e 1.4
F5OS ports (rSeries 1.0, VELOS 1/1.0)1 Começa em 1No F5OS, as portas do rSeries são numeradas de 1.0 até a última porta (10.0 na série r5000, 20.0 na série r10000). No VELOS uma porta agrupada é 1/1.0, e a mesma porta dividida em quatro é 1/1.1 a 1/1.4.
- Conta
- portas físicas
- Primeiro
1.0
Exemplo interfaces interface 1.0 devolve a primeira porta de um appliance rSeries
Atenção O .0 não é uma porta 0: no VELOS ele marca uma porta que não está dividida, e as partes divididas são .1 a .4.
VIPRION slots, LCD slot 0, vCMP guest slots1 Começa em 1Os slots do VIPRION contam a partir de 1: o artigo da F5 sobre o LCD diz que o ID do slot é contado a partir de 1, então a lâmina 2 é 2, e o tmsh lista os membros de cluster de 1 a 8. Num appliance os mesmos comandos do LCD usam o slot 0.
- Conta
- slots do chassi
- Primeiro
1- Último
8
Exemplo lcdwarn -c 0 0 devolve limpa os avisos de nível 0 do LCD no slot 0, de um appliance
Atenção No vCMP, a configuração slots de um convidado é uma quantidade de slots (maior que zero, padrão 1), não um número de slot.
software volumes (HD1.1, MD1.1)1 Começa em 1Os volumes de software se chamam HDX.Y (MDX.Y em RAID, CFX.Y em compact flash), onde X é o disco e Y o volume nele; os exemplos da F5 começam em HD1.1 e MD1.1.
- Conta
- discos e volumes
- Primeiro
HD1.1
Exemplo reboot volume HD1.1 devolve reinicia no primeiro volume do primeiro disco
TMM and CPU IDs (tmm0, Sys::TMM 0.0)0 Começa em 0As instâncias de TMM são numeradas a partir de 0: o tmsh mostra Sys::TMM: 0.0 a 0.7 numa plataforma com oito TMMs, e os processos começam em tmm.0. Com HTSplit só IDs pares são usados: o 10º TMM tem o ID 18.
- Conta
- instâncias de TMM
- Primeiro
0
Exemplo tmsh show sys tmm-info | grep Sys::TMM devolve Sys::TMM: 0.0 ... Sys::TMM: 0.7
APIs e declarações (3)
iControl REST $skip, $top0 Começa em 0Na paginação do iControl REST, $skip é quantos objetos pular, então a primeira página é $skip=0 (a nota de bug da F5 busca os 100 primeiros pools assim), e $top é quantos devolver.
- Conta
- objetos a pular
- Primeiro
$skip=0
Exemplo GET /mgmt/tm/ltm/pool?$skip=0&$top=100 devolve os 100 primeiros pools
iControl REST pageIndex, startIndex1 Começa em 1Os campos de paginação de uma resposta do iControl REST contam a partir de 1: no exemplo do DevCentral a primeira página informa pageIndex 1 e startIndex 1.
- Conta
- páginas e posições
- Primeiro
1
Exemplo GET /mgmt/tm/ltm/pool?$top=2 devolve pageIndex: 1, startIndex: 1
Atenção Então a mesma primeira página é $skip=0 na requisição e startIndex 1 na resposta.
iControl SOAP Log::SyslogLevel1 Começa em 1Os valores de Log::SyslogLevel do iControl SOAP ficam um acima dos números do syslog: LOG_LEVEL_EMERG é 1 e LOG_LEVEL_DEBUG 8, com 0 para nível desconhecido. ASM::SeverityName, no mesmo site, usa os números do syslog, EMERG 0 a DEBUG 7.
- Conta
- níveis de syslog
- Primeiro
LOG_LEVEL_EMERG = 1
Exemplo LOG_LEVEL_EMERG devolve 1
Atenção Converter entre eles exige ajuste de um: um valor de SyslogLevel menos 1 é a severidade do syslog.
Logs e captura de pacotes (4)
syslog severity (0 to 7)0 Começa em 0As severidades do syslog vão de 0, a mais grave (emerg), a 7 (debug). Numa linha de log do BIG-IP, o dígito entre os dois-pontos depois do código da mensagem é a severidade, com 0 sendo a mais alta.
- Conta
- níveis de severidade
- Primeiro
0 = emerg- Último
7 = debug
Exemplo 01220001:3: devolve severidade 3, err
Atenção Número maior é menos grave: 3 (err) é pior que 6 (info).
syslog facility local0 to local70 Começa em 0O BIG-IP usa as facilities local0 a local7 do syslog, e local0 é a do próprio BIG-IP: a F5 a associa a /var/log/ltm, onde caem as mensagens de iRule registradas com local0. A facility padrão de local-syslog é local0.
- Conta
- facilities do syslog
- Primeiro
local0- Último
local7
Exemplo log local0. "hello" devolve uma linha em /var/log/ltm
tcpdump -i 0.0=0 Zero é um valorNo tcpdump de um BIG-IP, 0.0 não é a interface número 0: significa todas as interfaces do TMM de uma vez. Não captura a interface de gerência e não tem limite de taxa, então use filtros.
- Conta
- um nome de interface, não um número
Exemplo tcpdump -i 0.0 devolve o tráfego de todas as interfaces do TMM
F5 Ethernet trailer: slot and tmm0·1 0 e 1 juntosO trailer Ethernet da F5 numa captura registra o slot do chassi e o TMM que tratou cada pacote, e o exemplo de Wireshark da F5 para TMM0 no Slot1 lê slot == 1 e tmm == 0: os slots contam a partir de 1, os TMMs a partir de 0.
- Conta
- lâminas e TMMs
Exemplo f5ethtrailer.slot == 1 and f5ethtrailer.tmm == 0 devolve pacotes tratados pelo primeiro TMM da primeira lâmina
Referências
- F5 K6091: The version of Tcl used to develop iRules
- F5 K36322151: List of disabled Tcl commands for iRules (12.x - 17.x)
- Tcl 8.4 manual: string
- Tcl 8.4 manual: lindex
- Tcl 8.4 manual: lrange
- Tcl 8.4 manual: lsearch
- Tcl 8.4 manual: linsert
- Tcl 8.4 manual: lreplace
- Tcl 8.4 manual: lset
- Tcl 8.4 manual: lsort
- Tcl 8.4 manual: split
- Tcl 8.4 manual: regexp
- Tcl 8.4 manual: regsub
- Tcl 8.4 manual: format
- Tcl 8.4 manual: scan
- Tcl 8.4 manual: clock
- Tcl 8.4 manual: binary
- Tcl 8.4 manual: info
- Tcl 8.4 manual: uplevel
- Tcl 8.4 manual: upvar
- Tcl 8.4 manual: expr
- Tcl 8.4 manual: if
- Tcl 8.4 manual: Tcl_GetBoolean
- Tcl 8.4.6 source code, tag core-8-4-6 on GitHub
- F5 iRules reference: getfield
- F5 iRules reference: findstr
- F5 iRules reference: substr
- F5 iRules reference: domain
- F5 iRules reference: URI::path
- F5 iRules reference: HTTP::request_num
- F5 iRules reference: HTTP2::requests
- F5 iRules reference: HTTP::header
- F5 iRules reference: SIP::header
- F5 iRules reference: HTTP::payload
- F5 iRules reference: TCP::payload
- F5 iRules reference: UDP::payload
- F5 iRules reference: SSL::payload
- F5 iRules reference: TCP::offset
- F5 iRules reference: SSL::cert
- F5 iRules reference: SSL::extensions
- F5 iRules reference: class
- F5 iRules reference: matchclass
- F5 iRules reference: TMM::cmp_unit
- F5 iRules reference: TMM::cmp_group
- F5 iRules reference: SIP::route
- F5 iRules reference: SIP::via
- F5 tmsh reference: ltm rule command SIP via
- F5 iRules reference: DIAMETER::avp
- F5 tmsh reference: ltm rule command DIAMETER avp
- F5 iRules reference: RADIUS::avp
- F5 iRules reference: MESSAGE::field
- F5 iRules reference: NAME::response
- F5 iRules reference: JSON::array
- F5 iRules reference: RESOLV::lookup
- F5 iRules reference: DNSMSG::record
- F5 iRules reference: whereis
- F5 iRules reference: active_members
- F5 iRules reference: members
- F5 iRules reference: table
- F5 iRules reference: STATS::incr
- F5 iRules reference: priority
- F5 iRules reference: MR::message
- F5 iRules reference: MR::connection_instance
- F5 iRules reference: SSL::verify_result
- F5 iRules reference: LB::server
- F5 iRules reference: log
- F5 tmsh reference: ltm policy
- F5 tmsh reference: ltm policy-strategy
- F5 tmsh reference: ltm pool
- F5 tmsh reference: ltm virtual
- F5 tmsh reference: net route-domain
- F5 tmsh reference: net interface
- F5 tmsh reference: net vlan
- F5 tmsh reference: sys software volume
- F5 tmsh reference: sys cluster
- F5 tmsh reference: vcmp guest
- F5 tmsh reference: cm traffic-group
- F5 tmsh reference: sys log-config destination local-syslog
- F5 tmsh reference: gtm pool a
- F5 tmsh reference: gtm wideip a
- F5 tmsh reference: apm acl
- F5 TechDocs: TMOS Routing Administration 14.0, Route Domains
- F5 TechDocs: Interface naming conventions (TMOS Routing Administration)
- F5 TechDocs: VLANs, VLAN Groups, and VXLAN (TMOS Routing Administration)
- F5 TechDocs: Platform Guide: VIPRION 2400 Series
- F5 TechDocs: About Pools (Local Traffic Management Basics)
- F5 TechDocs: About Virtual Servers (Local Traffic Management Basics)
- F5 TechDocs: Disk Management (BIG-IP System Essentials 15.1)
- F5 TechDocs: Device Service Clustering Administration 13.1, Managing Failover
- F5 K411: Overview of packet tracing with the tcpdump utility
- F5 K11094: Clearing the LCD and the Alarm LED remotely
- F5 K14358: Overview of Clustered Multiprocessing (11.3.0 and later)
- F5 K15003: Data and control plane tasks use separate logical cores (Hyper-Threading)
- F5 K16197: Reviewing BIG-IP log files
- F5 K15934495: Configuring the level of information that syslog-ng sends to log files (12.x - 17.x)
- F5 K33749970: Managing local traffic policies on the BIG-IP system using tmsh (12.1.0 and later)
- F5 K13637: Capturing internal TMM information with tcpdump
- F5 iControl REST API reference: tm/ltm/policy/rules
- F5 iControl SOAP reference: Log::SyslogLevel
- F5 iControl SOAP reference: ASM::SeverityName
- F5 BIG-IP AS3 3.57.0 schema reference
- F5 Bug ID 547581 (iControl REST paging)
- F5 DevCentral: Demystifying iControl REST Part 3, query parameters and tmsh options
- F5 DevCentral: LTM Policy, Matching Strategies
- F5 DevCentral: iRules Style Guide (JRahm, from Jim Deucker's notes, 2022)
- F5 Agility lab: BIG-IP DNS, wide IPs and pools
- F5 Ansible module documentation: bigip_apm_acl
- F5 rSeries training: rSeries Networking
- F5 VELOS training: VELOS Networking