Files
m241Neelima/vxworks-6.9/target/h/wrn/wm/snmp/engine/sendntfy.h
T
2026-07-30 11:19:44 +05:30

245 lines
7.4 KiB
C

/* $Header: /usr/cvsroot/target/h/wrn/wm/snmp/engine/sendntfy.h,v 1.2 2001/11/06 21:35:03 josh Exp $ */
/*
* Copyright (C) 1999-2005, 2008 Wind River Systems, Inc.
* All rights reserved. Provided under license only.
* Distribution or other use of this software is only
* permitted pursuant to the terms of a license agreement
* from Wind River Systems (and is otherwise prohibited).
* Refer to that license agreement for terms of use.
*/
/****************************************************************************
* Copyright 1998 Integrated Systems, Inc.
* All rights reserved.
****************************************************************************/
/*
* $Log: sendntfy.h,v $
* Revision 1.2 2001/11/06 21:35:03 josh
* new revised path structure, first pass. Also removing useless
* shell include files.
*
* Revision 1.1.1.1 2001/11/05 17:47:23 tneale
* Tornado shuffle
*
* Revision 9.9 2001/04/11 20:42:56 josh
* merge from the kingfisher branch
*
* Revision 9.8 2001/01/19 22:22:06 paul
* Update copyright.
*
* Revision 9.7 2000/07/12 18:39:31 josh
* moving SNMP_Find_Matching_Engine_ID() to v3_eng.c -- appropriately
* updating headers to correspond
*
* Revision 9.6 2000/06/09 14:54:12 josh
* modifications due to new installation options, new proxy code
* moved some definitions from sendntfy.h into v3_trgt.h so they'd
* be built with the target code
*
* Revision 9.5.2.3 2001/03/12 22:07:56 tneale
* Updated copyright
*
* Revision 9.5.2.2 2001/01/19 21:32:24 josh
* prototype for SNMP_Send_Notify_Name(). retrans_timer_exp() redefined
* to static
*
* Revision 9.5.2.1 2000/09/21 21:14:53 josh
* bringing branch include files in line with root
*
* Revision 9.5 2000/03/17 19:48:38 meister
* Update copyright notice
*
* Revision 9.4 2000/03/09 20:58:34 tneale
* All structure definitions are now bracketted with a test that
* potentially sets an alignment pragma. This is to maintain compatibility
* with the code base that had been distributed by Wind River.
*
* Revision 9.3 2000/03/09 16:58:01 tneale
* Added #ifdef for C++ to declare extern C if needed
*
* Revision 9.2 2000/02/04 21:54:16 josh
* prototyping functions that may need to be called by other modules
* this is done primarily to make the vxWorks compiler happy.
* Warning: the prototypes added may be duplicated by a mib_hand.h
* file generated by Emissary.
*
* Revision 9.1 2000/01/05 21:15:28 josh
* moving code around to make sure probe checks occur as long as an
* engine ID is found
*
* Revision 9.0 1999/10/21 20:43:35 josh
* updating version stamps
*
* Revision 1.8 1999/10/07 23:38:24 josh
* added definition for snmpaddr to taddress conversion routine
*
* Revision 1.7 1999/10/03 00:18:08 josh
* fixing retramit timer code -- setting handler correctly,
* cleaning up some double-free situations, and putting locking in
* where needed
*
* Revision 1.6 1999/09/30 22:07:58 josh
* cleaning up and changing prototypes to match new cookie scheme
*
* Revision 1.5 1999/09/27 21:11:44 josh
* fixing nits, rewriting engine id <--> address code, adding installation
* option
*
* Revision 1.4 1999/09/15 16:17:39 josh
* Linking the Retransmit Lock to the Retransmit list turns out to
* be a lot more trouble than it's worth. We'll just refer to
* it directly, a la SNMP_CoarseLock.
*
* Revision 1.3 1999/09/14 19:41:02 josh
* completed code for sending v3 notifies
*
* Revision 1.2 1999/09/11 02:14:06 josh
* updating header file -- created retrans block structures
*
* Revision 1.1 1999/09/01 21:56:04 josh
* Code to do actual sending of Notifies
*
*
*/
/* [clearcase]
modification history
-------------------
01b,15jul08,y_z add ack,timeout callback in the RETRANS_COOKIE_T
01a,19apr05,job update copyright notices
*/
#if (!defined(sendntfy_inc))
#define sendntfy_inc
#ifdef __cplusplus
extern"C" {
#endif
#if (!defined(asn1_inc))
#include <wrn/wm/snmp/engine/asn1.h>
#endif
#if (!defined(snmpdefs_inc))
#include <wrn/wm/snmp/engine/snmpdefs.h>
#endif
#if (!defined(buffer_inc))
#include <wrn/wm/snmp/engine/buffer.h>
#endif
#if (!defined(smi_inc))
#include <wrn/wm/snmp/engine/smi.h>
#endif
#if (!defined(etimer_inc))
#include <wrn/wm/snmp/engine/etimer.h>
#endif
#if (!defined(v3_trgt_inc))
#include <wrn/wm/snmp/engine/v3_trgt.h>
#endif
#if (!defined(v3_ntfy_inc))
#include <wrn/wm/snmp/engine/v3_ntfy.h>
#endif
#if (!defined(ntfy_chk_inc))
#include <wrn/wm/snmp/engine/ntfy_chk.h>
#endif
#ifndef ENVOY_RETRANS_CLEANUP_INTERVAL
#define ENVOY_RETRANS_CLEANUP_INTERVAL 500
#endif
#ifndef ENVOY_SET_RETRANS_ID
#define ENVOY_SET_RETRANS_ID(RET) \
(RET)->retrans_id = root_retrans_block.next_retrans_id++
#endif
#ifdef WINDNET_STRUCT_ALIGN
#pragma align 1
#endif
typedef struct RETRANS_COOKIE_S
{
struct RETRANS_COOKIE_S *next;
int ref_cnt;
RETRANS_CLEANUP_T *cleanup_rtn;
ACK_CALLBACK_T *ack_rtn;
TIMEOUT_CALLBACK_T *timeout_rtn;
PTR_T cookie;
} RETRANS_COOKIE_T;
typedef struct SNMP_RETRANS_S
{
struct SNMP_RETRANS_S *next;
SNMP_PKT_T *pktp;
SNMPADDR_T for_addr;
SNMPADDR_T loc_addr;
bits16_t retry_count;
bits32_t timeout;
IO_COMPLETE_T *io_complete;
ERR_COMPLETE_T *error_complete;
RETRANS_COOKIE_T *cookie;
bits32_t retrans_id;
bits32_t time_sent;
bits16_t flags;
#define SNMP_RETRANS_FLAGS_EXPIRED 0x01
#define SNMP_RETRANS_FLAGS_ACKNOWLEDGED 0x02
#define SNMP_RETRANS_FLAGS_SENDING_PROBE 0x04
bits16_t ref_cnt;
TARGET_LIST_T *tlp;
} SNMP_RETRANS_T;
typedef struct SNMP_RETRANS_ROOT_S
{
SNMP_RETRANS_T *retrans;
bits32_t next_retrans_id;
ENVOY_TIMER_T timer;
} SNMP_RETRANS_ROOT_T;
#ifdef WINDNET_STRUCT_ALIGN
#pragma align 0
#endif
extern RETRANS_COOKIE_T *root_retrans_cookie;
extern SNMP_RETRANS_ROOT_T root_retrans_block;
extern int SNMP_Probe_Check __((SNMP_RETRANS_T *));
extern void SNMP_Check_Retrans_List __((SNMP_PKT_T *));
extern void SNMP_Send_Packet_Retransmit __((SNMP_PKT_T *, SNMPADDR_T *,
SNMPADDR_T *, bits16_t,
bits32_t, IO_COMPLETE_T *,
ERR_COMPLETE_T *,
RETRANS_COOKIE_T *));
extern void SNMP_Send_Packet_Probe __((TARGET_LIST_T *,
SNMPADDR_T *,
IO_COMPLETE_T *,
ERR_COMPLETE_T *,
RETRANS_COOKIE_T *));
extern void SNMP_Send_Notify __((SNMP_NOTIFY_T *, VBL_T *, SNMPADDR_T *,
bits8_t *, ALENGTH_T, IO_COMPLETE_T *,
ERR_COMPLETE_T *, RETRANS_CLEANUP_T *,
PTR_T));
extern void SNMP_Send_Notify_Name_Ack __((bits8_t *, ALENGTH_T, VBL_T *,
SNMPADDR_T *, bits8_t *, ALENGTH_T,
IO_COMPLETE_T *, ERR_COMPLETE_T *,
RETRANS_CLEANUP_T *, PTR_T,ACK_CALLBACK_T *,TIMEOUT_CALLBACK_T *));
extern void SNMP_Send_Notify_Name __((bits8_t *, ALENGTH_T, VBL_T *,
SNMPADDR_T *, bits8_t *, ALENGTH_T,
IO_COMPLETE_T *, ERR_COMPLETE_T *,
RETRANS_CLEANUP_T *, PTR_T));
#ifdef __cplusplus
}
#endif
#endif /* #if (!defined(sendntfy_inc))*/