⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 slpd_log.c

📁 SLP协议在linux下的实现。此版本为1.2.1版。官方网站为www.openslp.org
💻 C
📖 第 1 页 / 共 2 页
字号:
    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 + -