C++ SNMP Stack
0.10
|
SNMP 메시지 전송/수신 라이브러리 더 자세히 ...
클래스 | |
class | CSnmpSession |
동기 방식으로 SNMP 통신하는 클래스 더 자세히 ... | |
class | CSnmpStack |
SNMP 메시지 전송/수신 클래스 더 자세히 ... | |
class | ISnmpStackCallBack |
SNMP stack callback 인터페이스 더 자세히 ... | |
class | CSnmpStackSetup |
class | CSnmpTcpAgentClientArg |
TCP 기반 SNMP 메시지 수신용 클라이언트 연결 쓰레드 생성 인자 더 자세히 ... | |
class | CSnmpTransaction |
SNMP transaction 저장 클래스 더 자세히 ... | |
class | CSnmpTransactionList |
SNMP 트랙젠션 리스트를 저장하는 클래스 더 자세히 ... |
함수 | |
void | LogPacket (const char *pszPacket, int iPacketLen) |
패킷을 HEX 문자열로 로그에 출력한다. | |
THREAD_API | SnmpSessionThread (LPVOID lpParameter) |
virtual void | ISnmpStackCallBack::RecvResponse (CSnmpMessage *pclsRequest, CSnmpMessage *pclsResponse)=0 |
SNMP 응답 메시지 수신 이벤트 callback. | |
THREAD_API | SnmpStackThread (LPVOID lpParameter) |
SNMP stack 쓰레드 | |
bool | StartSnmpStackThread (CSnmpStack *pclsSnmpStack) |
SNMP stack 쓰레드를 시작한다. | |
void | StopSnmpStackThread () |
SNMP stack 쓰레드를 종료한다. | |
bool | IsSnmpStackThreadRun () |
SNMP stack 쓰레드가 실행 중인지 검사한다. | |
THREAD_API | SnmpTcpAgentClientThread (LPVOID lpParameter) |
TCP 기반 SNMP 메시지 수신 쓰레드 | |
THREAD_API | SnmpTcpAgentListenThread (LPVOID lpParameter) |
SNMP 클라이언트의 TCP 연결 처리 쓰레드 | |
THREAD_API | SnmpUdpThread (LPVOID lpParameter) |
SNMP 메시지 수신 쓰레드 | |
bool | StartSnmpUdpThread (CSnmpStack *pclsSnmpStack) |
SNMP 메시지 수신 쓰레드를 시작한다. | |
void | StopSnmpUdpThread () |
SNMP 메시지 수신 쓰레드를 중지한다. | |
bool | IsSnmpUdpThreadRun () |
SNMP 메시지 수신 쓰레드가 실행 중인지 검사한다. | |
bool | CSnmpAgent::Open (int iUdpPort, const char *pszCommunity, const char *pszUserName, const char *pszAuthPassWord, const char *pszPrivPassWord) |
SNMP 패킷 수신을 위한 UDP 포트를 연다. | |
void | CSnmpAgent::Close () |
SNMP 패킷 수신을 위한 UDP 포트를 닫는다. | |
bool | CSnmpAgent::RecvRequest (CSnmpMessage *pclsRequest, int iTimeout) |
SNMP 요청 메시지 수신 대기 & 수신한다. | |
bool | CSnmpAgent::SendResponse (CSnmpMessage *pclsResponse) |
SNMP 응답 메시지를 전송한다. | |
bool | CSnmpSession::SetDestination (const char *pszIp, int iPort=161, bool bTcp=false, bool bTrapOnly=false) |
SNMP 요청 메시지를 전송할 SNMP Agent 주소를 설정한다. | |
bool | CSnmpSession::SetSnmpv2 (const char *pszCommunity) |
SNMPv2 를 위한 SNMP community 문자열을 설정한다. | |
bool | CSnmpSession::SetSnmpv3 (const char *pszUserName, const char *pszAuthPassWord, const char *pszPrivPassWord, const char *pszAuthEngineId=NULL) |
SNMPv3 를 위한 사용자 아이디 및 비밀번호를 설정한다. | |
bool | CSnmpSession::SetTimeout (int iMiliSecond) |
재전송을 위한 수신 대기 timeout 시간을 설정한다. | |
bool | CSnmpSession::SetReSendCount (int iReSendCount) |
timeout 되었을 때에 재전송하는 개수를 설정한다. | |
void | CSnmpSession::SetDebug (bool bDebug) |
SNMP 통신 디버그 모드를 설정한다. | |
bool | CSnmpSession::Open () |
SNMP 통신을 위한 UDP 소켓을 생성한다. | |
void | CSnmpSession::Close () |
SNMP 통신을 위한 UDP 소켓을 종료한다. | |
bool | CSnmpSession::Check () |
세션이 유효한지 검사한다. | |
const char * | CSnmpSession::GetIp () |
destination IP 주소를 리턴한다. | |
bool | CSnmpSession::SendGetRequest (const char *pszOid, CAsnType **ppclsAsnType) |
SNMP GET 메시지를 전송하여서 이에 대한 응답을 수신한다. | |
bool | CSnmpSession::SendGetNextRequest (const char *pszOid, std::string **ppstrResponseOid, CAsnType **ppclsAsnType) |
SNMP GET NEXT 메시지를 전송하여서 이에 대한 응답을 수신한다. | |
bool | CSnmpSession::SendGetRequest (const char *pszOid, std::string &strValue) |
SNMP GET 메시지를 전송하여서 이에 대한 응답을 수신한다. | |
bool | CSnmpSession::SendGetRequest (const char *pszOid, uint32_t &iValue) |
SNMP GET 메시지를 전송하여서 이에 대한 응답을 수신한다. | |
bool | CSnmpSession::SendGetNextRequest (const char *pszOid, std::string **ppstrResponseOid, std::string &strValue) |
SNMP GET NEXT 메시지를 전송하여서 이에 대한 응답을 수신한다. | |
bool | CSnmpSession::SendGetNextRequest (const char *pszOid, std::string **ppstrResponseOid, uint32_t &iValue) |
SNMP GET NEXT 메시지를 전송하여서 이에 대한 응답을 수신한다. | |
bool | CSnmpSession::SendRequest (CSnmpMessage *pclsRequest, CSnmpMessage *pclsResponse) |
SNMPv2 이면 SNMP 요청 메시지를 전송한 후, 이에 대한 응답 메시지를 수신한다. | |
bool | CSnmpSession::SendRequest (CSnmpMessage *pclsRequest) |
SNMP trap 과 같은 단방향 SNMP 메시지를 전송한다. | |
bool | CSnmpStack::Start (CSnmpStackSetup &clsSetup, ISnmpStackCallBack *pclsCallBack) |
SNMP stack 을 시작한다. | |
bool | CSnmpStack::Stop () |
SNMP stack 을 종료한다. | |
bool | CSnmpStack::SendRequest (const char *pszIp, int iPort, CSnmpMessage *pclsRequest) |
SNMP 요청 메시지를 전송한다. | |
bool | CSnmpStack::SendRequest (CSnmpMessage *pclsRequest) |
SNMP 요청 메시지를 전송한다. | |
uint32_t | CSnmpStack::GetNextRequestId () |
SNMP request ID 를 리턴한다. | |
void | CSnmpStack::SetRequestId (uint32_t iRequestId) |
SNMP request ID 를 설정한다. | |
bool | CSnmpTransaction::IsTimeout (struct timeval *psttTime, int iTimeout) |
timeout 되었는지 검사한다. | |
void | CSnmpTransactionList::SetSnmpStack (CSnmpStack *pclsStack) |
CSnmpStack 객체를 저장한다. | |
bool | CSnmpTransactionList::Insert (CSnmpMessage *pclsRequest) |
transaction list 에 SNMP 메시지를 저장한다. | |
bool | CSnmpTransactionList::Delete (CSnmpMessage *pclsRequest) |
SNMP 메시지에 대한 transaction 을 삭제한다. | |
bool | CSnmpTransactionList::Select (uint32_t iRequestId, CSnmpTransaction **ppclsTransaction) |
SNMP request ID 로 transaction 을 검색한다. | |
bool | CSnmpTransactionList::Delete (uint32_t iRequestId) |
SNMP request ID 인 transaction 을 삭제한다. | |
void | CSnmpTransactionList::Release (CSnmpTransaction *pclsTransaction) |
transaction 사용 개수를 1 감소 시킨다. | |
void | CSnmpTransactionList::Execute (struct timeval *psttTime) |
timeout 된 transaction 에 대한 재전송 기능을 수행한다. | |
void | CSnmpTransactionList::DeleteAll () |
모든 transaction 을 삭제한다. |
SNMP 메시지 전송/수신 라이브러리
bool CSnmpSession::Check | ( | ) |
세션이 유효한지 검사한다.
void CSnmpAgent::Close | ( | ) |
SNMP 패킷 수신을 위한 UDP 포트를 닫는다.
void CSnmpSession::Close | ( | ) |
SNMP 통신을 위한 UDP 소켓을 종료한다.
bool CSnmpTransactionList::Delete | ( | CSnmpMessage * | pclsRequest | ) |
SNMP 메시지에 대한 transaction 을 삭제한다.
pclsRequest | SNMP 메시지 |
bool CSnmpTransactionList::Delete | ( | uint32_t | iRequestId | ) |
SNMP request ID 인 transaction 을 삭제한다.
iRequestId | SNMP request ID |
void CSnmpTransactionList::DeleteAll | ( | ) |
모든 transaction 을 삭제한다.
void CSnmpTransactionList::Execute | ( | struct timeval * | psttTime | ) |
timeout 된 transaction 에 대한 재전송 기능을 수행한다.
psttTime | 현재 시간 |
const char * CSnmpSession::GetIp | ( | ) |
destination IP 주소를 리턴한다.
uint32_t CSnmpStack::GetNextRequestId | ( | ) |
SNMP request ID 를 리턴한다.
bool CSnmpTransactionList::Insert | ( | CSnmpMessage * | pclsRequest | ) |
transaction list 에 SNMP 메시지를 저장한다.
pclsRequest | SNMP 요청 메시지 |
bool IsSnmpStackThreadRun | ( | ) |
SNMP stack 쓰레드가 실행 중인지 검사한다.
bool IsSnmpUdpThreadRun | ( | ) |
SNMP 메시지 수신 쓰레드가 실행 중인지 검사한다.
bool CSnmpTransaction::IsTimeout | ( | struct timeval * | psttTime, |
int | iTimeout | ||
) |
timeout 되었는지 검사한다.
psttTime | 현재 시간 |
iTimeout | timeout milisecond |
void LogPacket | ( | const char * | pszPacket, |
int | iPacketLen | ||
) |
패킷을 HEX 문자열로 로그에 출력한다.
pszPacket | 패킷 |
iPacketLen | 패킷 길이 |
bool CSnmpAgent::Open | ( | int | iUdpPort, |
const char * | pszCommunity, | ||
const char * | pszUserName, | ||
const char * | pszAuthPassWord, | ||
const char * | pszPrivPassWord | ||
) |
SNMP 패킷 수신을 위한 UDP 포트를 연다.
iUdpPort | SNMP 패킷 수신을 위한 UDP 포트 번호 |
pszCommunity | SNMPv2 community 문자열 |
pszUserName | SNMPv3 사용자 아이디 |
pszAuthPassWord | SNMPv3 인증 비밀번호 |
pszPrivPassWord | SNMPv3 암호화 비밀번호 |
bool CSnmpSession::Open | ( | ) |
SNMP 통신을 위한 UDP 소켓을 생성한다.
bool CSnmpAgent::RecvRequest | ( | CSnmpMessage * | pclsRequest, |
int | iTimeout | ||
) |
SNMP 요청 메시지 수신 대기 & 수신한다.
pclsRequest | 수신된 SNMP 요청 메시지를 저장할 변수 |
iTimeout | 대기 시간 ( ms 단위 ) |
|
pure virtual |
SNMP 응답 메시지 수신 이벤트 callback.
pclsRequest | SNMP 요청 메시지 |
pclsResponse | SNMP 응답 메시지. SNMP 응답 메시지가 NULL 이면 timeout 된 것이다. |
void CSnmpTransactionList::Release | ( | CSnmpTransaction * | pclsTransaction | ) |
transaction 사용 개수를 1 감소 시킨다.
transaction 사용 개수가 0 이면 transaction 을 자료구조에서 삭제한다.
pclsTransaction | transaction 객체 |
bool CSnmpTransactionList::Select | ( | uint32_t | iRequestId, |
CSnmpTransaction ** | ppclsTransaction | ||
) |
SNMP request ID 로 transaction 을 검색한다.
iRequestId | SNMP request ID |
ppclsTransaction | SNMP transaction 객체 저장 변수 |
bool CSnmpSession::SendGetNextRequest | ( | const char * | pszOid, |
std::string ** | ppstrResponseOid, | ||
CAsnType ** | ppclsAsnType | ||
) |
SNMP GET NEXT 메시지를 전송하여서 이에 대한 응답을 수신한다.
pszOid | MIB |
ppstrResponseOid | 응답 메시지의 OID 저장 변수 |
ppclsAsnType | 응답 메시지의 ASN 타입 저장 변수 |
bool CSnmpSession::SendGetNextRequest | ( | const char * | pszOid, |
std::string ** | ppstrResponseOid, | ||
std::string & | strValue | ||
) |
SNMP GET NEXT 메시지를 전송하여서 이에 대한 응답을 수신한다.
pszOid | MIB |
ppstrResponseOid | 응답 메시지의 OID 저장 변수 |
strValue | 응답 값 저장 변수 |
bool CSnmpSession::SendGetNextRequest | ( | const char * | pszOid, |
std::string ** | ppstrResponseOid, | ||
uint32_t & | iValue | ||
) |
SNMP GET NEXT 메시지를 전송하여서 이에 대한 응답을 수신한다.
pszOid | MIB |
ppstrResponseOid | 응답 메시지의 OID 저장 변수 |
iValue | 응답 값 저장 변수 |
bool CSnmpSession::SendGetRequest | ( | const char * | pszOid, |
CAsnType ** | ppclsAsnType | ||
) |
SNMP GET 메시지를 전송하여서 이에 대한 응답을 수신한다.
pszOid | MIB |
ppclsAsnType | 응답 메시지의 ASN 타입 저장 변수 |
bool CSnmpSession::SendGetRequest | ( | const char * | pszOid, |
std::string & | strValue | ||
) |
SNMP GET 메시지를 전송하여서 이에 대한 응답을 수신한다.
pszOid | MIB |
strValue | 응답 값 저장 변수 |
bool CSnmpSession::SendGetRequest | ( | const char * | pszOid, |
uint32_t & | iValue | ||
) |
SNMP GET 메시지를 전송하여서 이에 대한 응답을 수신한다.
pszOid | MIB |
iValue | 응답 값 저장 변수 |
bool CSnmpStack::SendRequest | ( | const char * | pszIp, |
int | iPort, | ||
CSnmpMessage * | pclsRequest | ||
) |
SNMP 요청 메시지를 전송한다.
pszIp | 목적지 IP 주소 |
iPort | 목적지 포트 번호 |
pclsRequest | SNMP 요청 메시지 |
bool CSnmpStack::SendRequest | ( | CSnmpMessage * | pclsRequest | ) |
SNMP 요청 메시지를 전송한다.
pclsRequest | SNMP 요청 메시지 |
bool CSnmpSession::SendRequest | ( | CSnmpMessage * | pclsRequest, |
CSnmpMessage * | pclsResponse | ||
) |
SNMPv2 이면 SNMP 요청 메시지를 전송한 후, 이에 대한 응답 메시지를 수신한다.
SNMPv3 이면 SNMP 요청 메시지를 전송한 후, 이에 대한 응답 메시지 수신후, 다시 SNMP 요청 메시지를 전송한 후, 이에 대한 응답 메시지를 수신한다.
pclsRequest | SNMP 요청 메시지 |
pclsResponse | SNMP 응답 메시지 |
bool CSnmpSession::SendRequest | ( | CSnmpMessage * | pclsRequest | ) |
SNMP trap 과 같은 단방향 SNMP 메시지를 전송한다.
pclsRequest | SNMP 메시지 |
bool CSnmpAgent::SendResponse | ( | CSnmpMessage * | pclsResponse | ) |
SNMP 응답 메시지를 전송한다.
pclsResponse | SNMP 응답 메시지 |
void CSnmpSession::SetDebug | ( | bool | bDebug | ) |
SNMP 통신 디버그 모드를 설정한다.
bDebug | 디버그 모드 |
bool CSnmpSession::SetDestination | ( | const char * | pszIp, |
int | iPort = 161 , |
||
bool | bTcp = false , |
||
bool | bTrapOnly = false |
||
) |
SNMP 요청 메시지를 전송할 SNMP Agent 주소를 설정한다.
pszIp | IP 주소 |
iPort | 포트 번호 |
bTcp | TCP 사용 유무 |
bTrapOnly | TRAP 메시지만 전송하는가? |
void CSnmpStack::SetRequestId | ( | uint32_t | iRequestId | ) |
SNMP request ID 를 설정한다.
iRequestId | SNMP request ID |
bool CSnmpSession::SetReSendCount | ( | int | iReSendCount | ) |
timeout 되었을 때에 재전송하는 개수를 설정한다.
iReSendCount | timeout 되었을 때에 재전송하는 개수 |
void CSnmpTransactionList::SetSnmpStack | ( | CSnmpStack * | pclsStack | ) |
bool CSnmpSession::SetSnmpv2 | ( | const char * | pszCommunity | ) |
SNMPv2 를 위한 SNMP community 문자열을 설정한다.
pszCommunity | SNMP community 문자열 |
bool CSnmpSession::SetSnmpv3 | ( | const char * | pszUserName, |
const char * | pszAuthPassWord, | ||
const char * | pszPrivPassWord, | ||
const char * | pszAuthEngineId = NULL |
||
) |
SNMPv3 를 위한 사용자 아이디 및 비밀번호를 설정한다.
pszUserName | 사용자 아이디 |
pszAuthPassWord | 인증 비밀번호 |
pszPrivPassWord | 암호화 비밀번호 |
pszAuthEngineId | 인증 아이디 ( SNMP TRAP 전송시에 입력한다. ) |
bool CSnmpSession::SetTimeout | ( | int | iMiliSecond | ) |
재전송을 위한 수신 대기 timeout 시간을 설정한다.
iMiliSecond | milisecond timeout 시간 |
THREAD_API SnmpSessionThread | ( | LPVOID | lpParameter | ) |
lpParameter |
THREAD_API SnmpStackThread | ( | LPVOID | lpParameter | ) |
THREAD_API SnmpTcpAgentClientThread | ( | LPVOID | lpParameter | ) |
THREAD_API SnmpTcpAgentListenThread | ( | LPVOID | lpParameter | ) |
THREAD_API SnmpUdpThread | ( | LPVOID | lpParameter | ) |
SNMP 메시지 수신 쓰레드
lpParameter | SNMP stack 객체 |
bool CSnmpStack::Start | ( | CSnmpStackSetup & | clsSetup, |
ISnmpStackCallBack * | pclsCallBack | ||
) |
SNMP stack 을 시작한다.
clsSetup | 설정 객체 |
pclsCallBack | callback 객체 |
bool StartSnmpStackThread | ( | CSnmpStack * | pclsSnmpStack | ) |
bool StartSnmpUdpThread | ( | CSnmpStack * | pclsSnmpStack | ) |
SNMP 메시지 수신 쓰레드를 시작한다.
pclsSnmpStack | SNMP stack 객체 |
bool CSnmpStack::Stop | ( | ) |
SNMP stack 을 종료한다.
void StopSnmpStackThread | ( | ) |
SNMP stack 쓰레드를 종료한다.
void StopSnmpUdpThread | ( | ) |
SNMP 메시지 수신 쓰레드를 중지한다.