📄 slpd_log.c
字号:
SLPDLogBuffer(" scope = ", saadvert->scopelistlen, saadvert->scopelist); SLPDLogBuffer(" url = ", saadvert->urllen, saadvert->url); SLPDLogBuffer(" attributes = ", saadvert->attrlistlen, saadvert->attrlist);}/*-------------------------------------------------------------------------*/void SLPDLogPeerAddr(struct sockaddr_in* peeraddr)/*-------------------------------------------------------------------------*/{ SLPDLog("Peer IP address: %s\n", inet_ntoa(peeraddr->sin_addr));}/*=========================================================================*/void SLPDLogMessageInternals(SLPMessage message)/*=========================================================================*/{ SLPDLog("Peer: \n"); SLPDLog(" IP address: %s\n", inet_ntoa(message->peer.sin_addr)); SLPDLog("Header:\n"); SLPDLog(" version = %i\n",message->header.version); SLPDLog(" functionid = %i\n",message->header.functionid); SLPDLog(" length = %i\n",message->header.length); SLPDLog(" flags = %i\n",message->header.flags); SLPDLog(" extoffset = %i\n",message->header.extoffset); SLPDLog(" xid = %i\n",message->header.xid); SLPDLogBuffer(" langtag = ", message->header.langtaglen, message->header.langtag); switch (message->header.functionid) { case SLP_FUNCT_SRVRQST: SLPDLogSrvRqstMessage(&(message->body.srvrqst)); break; case SLP_FUNCT_SRVRPLY: SLPDLogSrvRplyMessage(&(message->body.srvrply)); break; case SLP_FUNCT_SRVREG: SLPDLogSrvRegMessage(&(message->body.srvreg)); break; case SLP_FUNCT_SRVDEREG: SLPDLogSrvDeRegMessage(&(message->body.srvdereg)); break; case SLP_FUNCT_SRVACK: SLPDLogSrvAckMessage(&(message->body.srvack)); break; case SLP_FUNCT_ATTRRQST: SLPDLogAttrRqstMessage(&(message->body.attrrqst)); break; case SLP_FUNCT_ATTRRPLY: SLPDLogAttrRplyMessage(&(message->body.attrrply)); break; case SLP_FUNCT_DAADVERT: SLPDLogDAAdvertMessage(&(message->body.daadvert)); break; case SLP_FUNCT_SRVTYPERQST: SLPDLogSrvTypeRqstMessage(&(message->body.srvtyperqst)); break; case SLP_FUNCT_SRVTYPERPLY: SLPDLogSrvTypeRplyMessage(&(message->body.srvtyperply)); break; case SLP_FUNCT_SAADVERT: SLPDLogSAAdvertMessage(&(message->body.saadvert)); break; default: SLPDLog("Message %i UNKNOWN:\n",message->header.functionid); SLPDLog(" This is really bad\n"); break; }}/*=========================================================================*/void SLPDLogMessage(int msglogflags, struct sockaddr_in* peerinfo, SLPBuffer buf)/* Log record of receiving or sending an SLP Message. Logging will only *//* occur if message logging is enabled G_SlpProperty.traceMsg != 0 *//* *//* msglogflags (IN) What type of message to log *//* *//* peerinfo (IN) the source or destination peer *//* *//* msg (IN) the message to log *//* *//* Returns: none *//*=========================================================================*/{ SLPMessage msg; if (peerinfo == NULL || buf == NULL) { return; } if ((G_SlpdProperty.traceMsg && (msglogflags & SLPDLOG_TRACEMSG)) || (G_SlpdProperty.traceDrop && (msglogflags & SLPDLOG_TRACEDROP)) ) { /* Don't log localhost traffic since it is probably IPC */ /* and don't log empty messages */ if (!ISLOCAL(peerinfo->sin_addr) && buf->end != buf->start) { msg = SLPMessageAlloc(); if (msg) { SLPDLog("\n"); SLPDLogTime(); SLPDLog("MESSAGE - "); if (msglogflags == SLPDLOG_TRACEMSG_OUT) { SLPDLog("Trace message (OUT)\n"); } else if (msglogflags == SLPDLOG_TRACEMSG_IN) { SLPDLog("Trace message (IN)\n"); } else if (msglogflags == SLPDLOG_TRACEDROP) { SLPDLog("Dropped message (following message silently ignored)\n"); } else { SLPDLog("\n"); } if (SLPMessageParseBuffer(peerinfo,buf,msg) == 0) { SLPDLogMessageInternals(msg); } else { SLPDLog("Message parsing failed\n"); SLPDLog("Peer: \n"); SLPDLog(" IP address: %s\n", inet_ntoa(msg->peer.sin_addr)); } SLPMessageFree(msg); } } }}/*=========================================================================*/void SLPDLogRegistration(const char* prefix, SLPDatabaseEntry* entry)/* Log record of having added a registration to the database. Logging of *//* registraions will only occur if registration trace is enabled *//* G_SlpProperty.traceReg != 0 *//* *//* prefix (IN) an informative prefix for the log entry *//* *//* entry (IN) the database entry that was affected *//* *//* Returns: none *//*=========================================================================*/{ if (prefix == NULL || entry == NULL) { return; } if (G_SlpdProperty.traceReg) { SLPDLog("\n"); SLPDLogTime(); SLPDLog("DATABASE - %s:\n",prefix); SLPDLog(" SA address = "); switch (entry->msg->body.srvreg.source) { case SLP_REG_SOURCE_UNKNOWN: SLPDLog("<unknown>\n"); break; case SLP_REG_SOURCE_REMOTE: SLPDLog("remote (%s)\n", inet_ntoa(entry->msg->peer.sin_addr)); break; case SLP_REG_SOURCE_LOCAL: SLPDLog("IPC (libslp)\n"); break; case SLP_REG_SOURCE_STATIC: SLPDLog("static (slp.reg)\n"); break; } SLPDLogBuffer(" service-url = ", entry->msg->body.srvreg.urlentry.urllen, entry->msg->body.srvreg.urlentry.url); SLPDLogBuffer(" scope = ", entry->msg->body.srvreg.scopelistlen, entry->msg->body.srvreg.scopelist); SLPDLogBuffer(" attributes = ", entry->msg->body.srvreg.attrlistlen, entry->msg->body.srvreg.attrlist); }}/*=========================================================================*/void SLPDLogDAAdvertisement(const char* prefix, SLPDatabaseEntry* entry)/* Log record of addition or removal of a DA to the store of known DAs. *//* Will only occur if DA Advertisment message logging is enabled *//* G_SlpProperty.traceDATraffic != 0 *//* *//* prefix (IN) an informative prefix for the log entry *//* *//* entry (IN) the database entry that was affected *//* *//* Returns: none *//*=========================================================================*/{ if (prefix == NULL || entry == NULL) { return; } if (G_SlpdProperty.traceDATraffic) { SLPDLog("\n"); SLPDLogTime(); SLPDLog("KNOWNDA - %s:\n",prefix); SLPDLog(" DA address = %s\n",inet_ntoa(entry->msg->peer.sin_addr)); SLPDLogBuffer(" directory-agent-url = ", entry->msg->body.daadvert.urllen, entry->msg->body.daadvert.url); SLPDLog(" bootstamp = %x\n",entry->msg->body.daadvert.bootstamp); SLPDLogBuffer(" scope = ", entry->msg->body.daadvert.scopelistlen, entry->msg->body.daadvert.scopelist); SLPDLogBuffer(" attributes = ", entry->msg->body.daadvert.attrlistlen, entry->msg->body.daadvert.attrlist);#ifdef ENABLE_SLPV2_SECURITY SLPDLogBuffer(" SPI list = ", entry->msg->body.daadvert.spilistlen, entry->msg->body.daadvert.spilist);#endif /*ENABLE_SLPV2_SECURITY*/ }}/*=========================================================================*/void SLPDLogParseWarning(struct sockaddr_in* peeraddr, SLPBuffer buf)/* Log a parsing error warning and dumps the invalid message. *//*=========================================================================*/ { unsigned char* curpos; int i = 0; if (peeraddr == NULL || buf == NULL) { return; } SLPDLog("\n"); SLPDLogTime(); SLPDLog("*** WARNING Parse Error ***\n"); SLPDLogPeerAddr(peeraddr); SLPDLog("message size = %i\n",buf->end - buf->start); SLPDLog("message dump follows:\n"); for (curpos = buf->start; curpos < buf->end; curpos++) { SLPDLog("0x%02x",*curpos); if (*curpos < 0x20 || *curpos > 0x7f) { SLPDLog("(' ') "); } else { SLPDLog("('%c') ",*curpos); } /* newline every 70 columns */ i++; if (i==10) { i=0; SLPDLog("\n"); } } SLPDLog("\n");}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -