(file) Return to snmpDeliverTrap_emanate.cpp CVS log (file) (dir) Up to [Pegasus] / pegasus / src / Pegasus / Handler / snmpIndicationHandler

 1 kumpf 1.1.2.1 //%/////////////////////////////////////////////////////////////////////////////
 2               //
 3               // Copyright (c) 2000, 2001 BMC Software, Hewlett Packard, IBM, The Open Group,
 4               // Tivoli Systems
 5               //
 6               // Permission is hereby granted, free of charge, to any person obtaining a copy
 7               // of this software and associated documentation files (the "Software"), to 
 8               // deal in the Software without restriction, including without limitation the 
 9               // rights to use, copy, modify, merge, publish, distribute, sublicense, and/or 
10               // sell copies of the Software, and to permit persons to whom the Software is
11               // furnished to do so, subject to the following conditions:
12               // 
13               // THE ABOVE COPYRIGHT NOTICE AND THIS PERMISSION NOTICE SHALL BE INCLUDED IN 
14               // ALL COPIES OR SUBSTANTIAL PORTIONS OF THE SOFTWARE. THE SOFTWARE IS PROVIDED
15               // "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT
16               // LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR 
17               // PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT 
18               // HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN 
19               // ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
20               // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
21               //
22 kumpf 1.1.2.1 //==============================================================================
23               //
24               // Author: Nitin Upasani, Hewlett-Packard Company (Nitin_Upasani@hp.com)
25               //
26               // Modified By:
27               //
28               //%/////////////////////////////////////////////////////////////////////////////
29               
30               #include <fcntl.h>
31               #include <unistd.h>
32               #include <sys/stat.h>
33               #include "snmpDeliverTrap_emanate.h"
34               
35               PEGASUS_NAMESPACE_BEGIN
36               
37               PEGASUS_USING_STD;
38               
39               void snmpDeliverTrap_emanate::deliverTrap(const String& trapOid,
40                   const String& enterprise,
41                   const String& destination,
42                   const String& trapType,
43 kumpf 1.1.2.1     Array<String>& vbOids,
44                   Array<String>& vbTypes,
45                   Array<String>& vbValues)
46               {
47                   int            fifo_fd;
48                   struct stat    sbuf;
49               
50                   trapHeader myTrapHeader;
51                   trapHeader myTrapData;
52               
53                   cout << "NITIN: calling deliverTrap()" << endl;
54               
55                   if (stat(_SNMP_FIFO, &sbuf) == -1) 
56                       cout << "The fifo is not opened by EMANATE subagent" << endl;
57                   else
58                   {
59                       if ((fifo_fd = open (_SNMP_FIFO, O_WRONLY|O_NONBLOCK)) == -1) 
60                           cout << "The fifo is not opened for reading. Subagent is not running" << endl;
61                       else
62                       {
63 kumpf 1.1.2.2             strcpy(myTrapHeader.destination, _CString(destination));
64 kumpf 1.1.2.1             strcpy(myTrapHeader.snmpType, "SNMPV2");
65 kumpf 1.1.2.2             strcpy(myTrapHeader.enterprise, _CString(enterprise));
66                           strcpy(myTrapHeader.trapOid, _CString(trapOid));
67 kumpf 1.1.2.1             myTrapHeader.variable_packets =  vbOids.size();
68               
69                           if (write(fifo_fd, &myTrapHeader, sizeof(myTrapHeader)) <=0)
70                               cout << "Error in writing" << endl;
71                           else
72                           {
73                               for(int packets = 0; packets<vbOids.size(); packets++)
74                               {
75                                   trapData myTrapData;
76 kumpf 1.1.2.2                     strcpy(myTrapData.vbOid, _CString(vbOids[packets]));
77                                   strcpy(myTrapData.vbType, _CString(vbTypes[packets]));
78                                   strcpy(myTrapData.vbValue, _CString(vbValues[packets]));
79 kumpf 1.1.2.1                     write(fifo_fd, &myTrapData, sizeof(myTrapData));
80                               }
81                           }
82                       }
83                       close (fifo_fd);
84                   }
85               }
86               
87               PEGASUS_NAMESPACE_END

No CVS admin address has been configured
Powered by
ViewCVS 0.9.2