3. Interface de Programação

Conta com um grupo de rotinas que podem ser utilizadas em programas escritos na linguagem C.

3.1 Quem incluir ?

O código da aplicação que se utilize da API deve incluir os seguintes arquivos em seu código fonte:

3.2 Funções e Estruturas Utilizadas

3.2.1 snmp_open, snmp_close e snmp_send

Recebem como parâmetro de entrada um ponteiro para um objeto com a estrutura snmp_session. Adicionalmente, snmp_open também retorna um ponteiro para um objeto com mesma estrutura, mostrada abaixo.

A estrutura mencionada contém informações para um conjunto de transações que deverão compartilhar características similares de transporte.

Configurar campos na sessão e pdu para os valores seguintes, para ter um valor default:

A rotina u_char * authenticator (pdu, length, community, community_len) deve aparecer na aplicação, no caso de haver autenticação, onde:

A rotina retorna a pdu autenticada, ou NULL se a autenticação falhar. Se autenticação nula é utilizada, o autenticador em snmp_session pode ser configurado para NULL.

A rotina int callback (operation, session, reqid, pdu, magic) também deve ser suprida pela aplicação, onde:

Retorna 1 se o pedido retornou com sucesso, 0 se está pendente. Qualquer dado na pdu deve ser copiado porque será liberado.

Abaixo são definidas as operações:

3.2.2 snmp_send e snmp_free_pdu

Recebem como parâmetro de entrada um ponteiro para um objeto com a estrutura snmp_pdu. A estrutura contém informações que descrevem uma transação que será realizada sobre uma sessão aberta.

3.2.3 snmp_read e snmp_select_info e snmp_timeout

Provêm uma interface para o uso da chamada de sistema select de modo que transações SNMP possam ocorrer assincronamente. À snmp_select_info é dada a informação que seria passada a função select convencional. Esta informação é modificada a fim de que SNMP possa pegar o serviço que ele requisita da chamada ao select. Neste caso, numfds, fdset e timeout correspondem aos argumentos nfds, readfds e timeout do select, respectivamente. A única exceção é que timeout deve sempre apontar para uma estrutural timeval alocada. Se for passado um valor NULL para o timeout, o campo block é passado para TRUE e o timeout é tratado como indefinido. A mesma regra se aplica ao retorno da operação snmp_select_info.

Após chamar a operação snmp_select_info, select é chamada com o dado retornado. Quando select retorna, snmp_read é chamada com o fd_set retornado do select. Ele fará a leitura de todos os sockets SNMP com entrada. Se ocorrer um timeout na função select , snmp_timeout deveria ser chamada para ver o timeout era intencionado para SNMP.

InícioAnteriorPróximo