1/*
2 * CDDL HEADER START
3 *
4 * The contents of this file are subject to the terms of the
5 * Common Development and Distribution License, Version 1.0 only
6 * (the "License").  You may not use this file except in compliance
7 * with the License.
8 *
9 * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
10 * or http://www.opensolaris.org/os/licensing.
11 * See the License for the specific language governing permissions
12 * and limitations under the License.
13 *
14 * When distributing Covered Code, include this CDDL HEADER in each
15 * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
16 * If applicable, add the following below this CDDL HEADER, with the
17 * fields enclosed by brackets "[]" replaced with your own identifying
18 * information: Portions Copyright [yyyy] [name of copyright owner]
19 *
20 * CDDL HEADER END
21 *
22 * Copyright 1997 Sun Microsystems, Inc.  All Rights Reserved.
23 * Use is subject to license terms.
24 */
25
26/* HISTORY
27 * 5-20-96	Jerry Yeung	add mib-handling data structure
28 * 9-20-96	Jerry Yeung	change agent structure
29 */
30
31#ifndef _AGENT_H_
32#define _AGENT_H_
33
34#pragma ident	"%Z%%M%	%I%	%E% SMI"
35
36#include "snmpdx_stub.h"
37
38#define SSA_OPER_STATUS_ACTIVE	1
39#define SSA_OPER_STATUS_NOT_IN_SERVICE	2
40#define SSA_OPER_STATUS_INIT 	3
41#define SSA_OPER_STATUS_LOAD	4
42#define SSA_OPER_STATUS_DESTROY	5
43
44typedef struct _Agent {
45
46	/* extra elements */
47        Integer agentID;
48        Integer agentStatus;
49        Integer agentTimeOut;
50        Integer agentPortNumber; /* same as address.sin_port */
51        String agentPersonalFile;
52        String agentConfigFile;
53        String agentExecutable;
54        String agentVersionNum;
55        Integer agentProcessID;
56        String agentName; /* it points to name */
57	Integer agentSystemUpTime;
58        Integer agentWatchDogTime;
59        String agentProtocol;
60
61	Integer	agentTreeIndex;
62	Integer	agentTblIndex;
63
64	struct _Manager	*first_manager;
65	struct _Agent	*next_agent;
66	Address		address;
67	char		*name;
68	u_long		timeout;
69	struct _Subtree	*first_agent_subtree;
70	int		numOfFailRequest;
71} Agent;
72
73extern int sap_agent_id;
74
75/* the agent list */
76extern Agent *first_agent;
77
78/* the address is a unique key for an agent */
79extern Agent *agent_find(Address *address);
80extern Agent *agent_find_by_name(char* name);
81extern Agent *agent_find_by_id(int id);
82
83/* We must invoke subtree_list_delete() before invoking */
84/* this function because the first_agent_subtree member */
85/* of the agent structures should be NULL               */
86extern void agent_list_delete();
87
88extern void agent_update_subtree(Agent* agent);
89
90extern void agent_detach_from_list(Agent* agent);
91
92extern void agent_destroy(Agent* agent);
93
94extern void trace_agents();
95extern void agent_free(Agent *ap);
96
97#endif
98
99