Lines Matching refs:trap
59 /* generic trap code */
61 /* specific trap code */
68 /* output trap lengths used in ASN encoding */
79 static u16_t snmp_trap_varbind_sum(struct snmp_msg_trap *trap, struct snmp_varbind *varbinds);
80 static u16_t snmp_trap_header_sum(struct snmp_msg_trap *trap, u16_t vb_len);
81 static err_t snmp_trap_header_enc(struct snmp_msg_trap *trap, struct snmp_pbuf_stream *pbuf_stream);
82 static err_t snmp_trap_varbind_enc(struct snmp_msg_trap *trap, struct snmp_pbuf_stream *pbuf_stream, struct snmp_varbind *varbinds);
86 LWIP_DEBUGF(SNMP_DEBUG, ("SNMP error during creation of outbound trap frame!")); \
107 * Sets enable switch for this trap destination.
122 * Sets IPv4 address for this trap destination.
158 * Sends a generic or enterprise specific trap message.
161 * @param generic_trap is the trap code
238 * Send generic SNMP trap
249 * Send specific SNMP trap with variable bindings
259 * Send coldstart trap
269 * Send authentication failure trap (used internally by agent)
280 snmp_trap_varbind_sum(struct snmp_msg_trap *trap, struct snmp_varbind *varbinds)
298 trap->vbseqlen = tot_len;
299 snmp_asn1_enc_length_cnt(trap->vbseqlen, &tot_len_len);
306 * Sums trap header field lengths from tail to head and
309 * @param trap Trap message
311 * @return the required length for encoding the trap header
314 snmp_trap_header_sum(struct snmp_msg_trap *trap, u16_t vb_len)
322 snmp_asn1_enc_u32t_cnt(trap->ts, &len);
326 snmp_asn1_enc_s32t_cnt(trap->spc_trap, &len);
330 snmp_asn1_enc_s32t_cnt(trap->gen_trap, &len);
334 if (IP_IS_V6_VAL(trap->sip)) {
336 len = sizeof(ip_2_ip6(&trap->sip)->addr);
340 len = sizeof(ip_2_ip4(&trap->sip)->addr);
346 snmp_asn1_enc_oid_cnt(trap->enterprise->id, trap->enterprise->len, &len);
350 trap->pdulen = tot_len;
351 snmp_asn1_enc_length_cnt(trap->pdulen, &lenlen);
354 trap->comlen = (u16_t)LWIP_MIN(strlen(snmp_community_trap), 0xFFFF);
355 snmp_asn1_enc_length_cnt(trap->comlen, &lenlen);
356 tot_len += 1 + lenlen + trap->comlen;
358 snmp_asn1_enc_s32t_cnt(trap->snmp_version, &len);
362 trap->seqlen = tot_len;
363 snmp_asn1_enc_length_cnt(trap->seqlen, &lenlen);
370 snmp_trap_varbind_enc(struct snmp_msg_trap *trap, struct snmp_pbuf_stream *pbuf_stream, struct snmp_varbind *varbinds)
377 SNMP_ASN1_SET_TLV_PARAMS(tlv, SNMP_ASN1_TYPE_SEQUENCE, 0, trap->vbseqlen);
390 * Encodes trap header from head to tail.
393 snmp_trap_header_enc(struct snmp_msg_trap *trap, struct snmp_pbuf_stream *pbuf_stream)
398 SNMP_ASN1_SET_TLV_PARAMS(tlv, SNMP_ASN1_TYPE_SEQUENCE, 0, trap->seqlen);
403 snmp_asn1_enc_s32t_cnt(trap->snmp_version, &tlv.value_len);
405 BUILD_EXEC( snmp_asn1_enc_s32t(pbuf_stream, tlv.value_len, trap->snmp_version) );
408 SNMP_ASN1_SET_TLV_PARAMS(tlv, SNMP_ASN1_TYPE_OCTET_STRING, 0, trap->comlen);
410 BUILD_EXEC( snmp_asn1_enc_raw(pbuf_stream, (const u8_t *)snmp_community_trap, trap->comlen) );
413 SNMP_ASN1_SET_TLV_PARAMS(tlv, (SNMP_ASN1_CLASS_CONTEXT | SNMP_ASN1_CONTENTTYPE_CONSTRUCTED | SNMP_ASN1_CONTEXT_PDU_TRAP), 0, trap->pdulen);
418 snmp_asn1_enc_oid_cnt(trap->enterprise->id, trap->enterprise->len, &tlv.value_len);
420 BUILD_EXEC( snmp_asn1_enc_oid(pbuf_stream, trap->enterprise->id, trap->enterprise->len) );
423 if (IP_IS_V6_VAL(trap->sip)) {
425 SNMP_ASN1_SET_TLV_PARAMS(tlv, SNMP_ASN1_TYPE_IPADDR, 0, sizeof(ip_2_ip6(&trap->sip)->addr));
427 BUILD_EXEC( snmp_asn1_enc_raw(pbuf_stream, (const u8_t *)&ip_2_ip6(&trap->sip)->addr, sizeof(ip_2_ip6(&trap->sip)->addr)) );
431 SNMP_ASN1_SET_TLV_PARAMS(tlv, SNMP_ASN1_TYPE_IPADDR, 0, sizeof(ip_2_ip4(&trap->sip)->addr));
433 BUILD_EXEC( snmp_asn1_enc_raw(pbuf_stream, (const u8_t *)&ip_2_ip4(&trap->sip)->addr, sizeof(ip_2_ip4(&trap->sip)->addr)) );
437 /* trap length */
439 snmp_asn1_enc_s32t_cnt(trap->gen_trap, &tlv.value_len);
441 BUILD_EXEC( snmp_asn1_enc_s32t(pbuf_stream, tlv.value_len, trap->gen_trap) );
443 /* specific trap */
445 snmp_asn1_enc_s32t_cnt(trap->spc_trap, &tlv.value_len);
447 BUILD_EXEC( snmp_asn1_enc_s32t(pbuf_stream, tlv.value_len, trap->spc_trap) );
451 snmp_asn1_enc_s32t_cnt(trap->ts, &tlv.value_len);
453 BUILD_EXEC( snmp_asn1_enc_s32t(pbuf_stream, tlv.value_len, trap->ts) );