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

📄 slptool.c

📁 SLP协议在linux下的实现。此版本为1.2.1版。官方网站为www.openslp.org
💻 C
📖 第 1 页 / 共 2 页
字号:
void GetProperty(SLPToolCommandLine* cmdline)/*=========================================================================*/  {    const char* propertyValue;        propertyValue = SLPGetProperty(cmdline->cmdparam1);    printf("%s = %s\n", 	   cmdline->cmdparam1,	   propertyValue == 0 ? "" : propertyValue);}/*=========================================================================*/int ParseCommandLine(int argc,char* argv[], SLPToolCommandLine* cmdline)/* Returns  Zero on success.  Non-zero on error.                           *//*=========================================================================*/{    int i;    if(argc < 2)    {        /* not enough arguments */        return 1;    }    for (i=1;i<argc;i++)    {        if( strcasecmp(argv[i],"-v") == 0 ||            strcasecmp(argv[i],"--version") == 0 )        {            if(i < argc)            {                cmdline->cmd = PRINT_VERSION;		return 0;            }            else            {                return 1;            }        }        else if( strcasecmp(argv[i],"-s") == 0 ||		 strcasecmp(argv[i],"--scopes") == 0 )        {            i++;            if(i < argc)            {                cmdline->scopes = argv[i];            }            else            {                return 1;            }        }        else if( strcasecmp(argv[i],"-l") == 0 ||                 strcasecmp(argv[i],"--lang") == 0 )        {            i++;            if(i < argc)            {                cmdline->lang = argv[i];            }            else            {                return 1;            }        }        else if(strcasecmp(argv[i],"findsrvs") == 0)        {            cmdline->cmd = FINDSRVS;                        /* service type */            i++;            if(i < argc)            {                cmdline->cmdparam1 = argv[i];            }            else            {                return 1;            }                        /* (optional) filter */            i++;            if(i < argc)            {                cmdline->cmdparam2 = argv[i];            }            break;        }        #ifndef MI_NOT_SUPPORTED        else if(strcasecmp(argv[i],"findsrvsusingiflist") == 0)        {            cmdline->cmd = FINDSRVSUSINGIFLIST;	    /* (required) IFList */	    i++;	    if(i < argc)	    {                cmdline->cmdparam3 = argv[i];	    }	    else	    {                return 1;	    }                        /* service type */            i++;            if(i < argc)            {                cmdline->cmdparam1 = argv[i];            }            else            {                return 1;            }            /* (optional) filter */            i++;            if(i < argc)            {                cmdline->cmdparam2 = argv[i];            }            break;        }        #endif /* MI_NOT_SUPPORTED */        #ifndef UNICAST_NOT_SUPPORTED        else if(strcasecmp(argv[i],"unicastfindsrvs") == 0)        {            cmdline->cmd = UNICASTFINDSRVS;                        i++;            if(i < argc)            {                cmdline->cmdparam3 = argv[i];            }            else            {                return 1;            }            /* service type */            i++;            if(i < argc)            {                cmdline->cmdparam1 = argv[i];            } else {		return 1;	    }			/* optional filter */	    i++;            if(i < argc)            {                cmdline->cmdparam2 = argv[i];            }             break;        }        #endif        else if(strcasecmp(argv[i],"findattrs") == 0)        {            cmdline->cmd = FINDATTRS;                                   /* url or service type */            i++;            if(i < argc)            {                cmdline->cmdparam1 = argv[i];            }            else            {                return 1;            }                        /* (optional) attrids */            i++;            if(i < argc)            {                cmdline->cmdparam2 = argv[i];            }        }        #ifndef UNICAST_NOT_SUPPORTED        else if(strcasecmp(argv[i],"unicastfindattrs") == 0)        {            cmdline->cmd = UNICASTFINDATTRS;            /* unicast IP address */            i++;            if(i < argc)            {                cmdline->cmdparam3 = argv[i];            }            else            {                return 1;            }            /* url or service type */            i++;            if(i < argc)            {                cmdline->cmdparam1 = argv[i];            } else {                return 1;            }                /* optional filter */            i++;            if(i < argc)            {                cmdline->cmdparam2 = argv[i];            }            break;        }        #endif#ifndef MI_NOT_SUPPORTED        else if(strcasecmp(argv[i],"findattrsusingiflist") == 0)        {            cmdline->cmd = FINDATTRSUSINGIFLIST;                       	    /* (required) IFList */            i++;            if(i < argc)            {                cmdline->cmdparam3 = argv[i];            }            else            {                return 1;            }                        /* url or service type */            i++;            if(i < argc)            {                cmdline->cmdparam1 = argv[i];            }            else            {                return 1;            }            /* (optional) attrids */            i++;            if(i < argc)            {                cmdline->cmdparam2 = argv[i];            }        }#endif /* MI_NOT_SUPPORTED */        else if(strcasecmp(argv[i],"findsrvtypes") == 0)        {            cmdline->cmd = FINDSRVTYPES;            /* (optional) naming authority */            i++;            if(i < argc)            {                cmdline->cmdparam1 = argv[i];            }                                     }        #ifndef UNICAST_NOT_SUPPORTED        else if(strcasecmp(argv[i],"unicastfindsrvtypes") == 0)        {            cmdline->cmd = UNICASTFINDSRVTYPES;            /* unicast IP address */            i++;            if(i < argc)            {                cmdline->cmdparam3 = argv[i];            }            else            {                return 1;            }            /* (optional) naming authority */            i++;            if(i < argc)            {                cmdline->cmdparam1 = argv[i];            }        }        #endif#ifndef MI_NOT_SUPPORTED        else if(strcasecmp(argv[i],"findsrvtypesusingiflist") == 0)        {            cmdline->cmd = FINDSRVTYPESUSINGIFLIST;            /* (required) IFList */            i++;            if(i < argc)            {                cmdline->cmdparam3 = argv[i];            }            else            {                return 1;            }            /* (optional) naming authority */            i++;            if(i < argc)            {                cmdline->cmdparam1 = argv[i];            }                                     }#endif /* MI_NOT_SUPPORTED */        else if(strcasecmp(argv[i],"findscopes") == 0)        {	    cmdline->cmd = FINDSCOPES;	}        else if(strcasecmp(argv[i],"register") == 0)        {            cmdline->cmd = REGISTER;                        /* url */            i++;            if(i < argc)            {                cmdline->cmdparam1 = argv[i];            }            else            {                return 1;            }                        /* Optional attrids */            i++;            if(i < argc)            {                cmdline->cmdparam2 = argv[i];            }	    else	    {	        cmdline->cmdparam2 = cmdline->cmdparam1 + strlen(cmdline->cmdparam1);            }	               break;        }        else if(strcasecmp(argv[i],"deregister") == 0)        {            cmdline->cmd = DEREGISTER;            /* url */            i++;            if(i < argc)            {                cmdline->cmdparam1 = argv[i];            }	    else	    {		return 1;	    }        }        else if(strcasecmp(argv[i],"getproperty") == 0)        {	    cmdline->cmd = GETPROPERTY;	    i++;	    if(i < argc)	    {	        cmdline->cmdparam1 = argv[i];	    }	    else	    {	        return 1;	    }	}        else        {            return 1;        }        }    return 0;}/*=========================================================================*/void DisplayUsage()/*=========================================================================*/{    printf("Usage: slptool [options] command-and-arguments \n");    printf("   options may be:\n");    printf("      -v (or --version) displays version of slptool and OpenSLP\n");    printf("      -s (or --scope) followed by a comma separated list of scopes\n");    printf("      -l (or --language) followed by a language tag\n");    printf("   command-and-arguments may be:\n");    printf("      findsrvs service-type [filter]\n");#ifndef MI_NOT_SUPPORTED    printf("      findsrvsusingiflist interface-list service-type [filter]\n");#endif /* MI_NOT_SUPPORTED */#ifndef UNICAST_NOT_SUPPORTED    printf("      unicastfindsrvs ip-address service-type [filter]\n");#endif    printf("      findattrs url [attrids]\n");#ifndef UNICAST_NOT_SUPPORTED    printf("      unicastfindattrs ip-address url [attrids]\n");#endif#ifndef MI_NOT_SUPPORTED    printf("      findattrsusingiflist interface-list url [attrids]\n");#endif /* MI_NOT_SUPPORTED */    printf("      findsrvtypes [authority]\n");#ifndef UNICAST_NOT_SUPPORTED    printf("      unicastfindsrvtypes [authority]\n");#endif#ifndef MI_NOT_SUPPORTED    printf("      findsrvtypesusingiflist interface-list [authority]\n");#endif /* MI_NOT_SUPPORTED */    printf("      findscopes\n");    printf("      register url [attrs]\n");    printf("      deregister url\n");    printf("      getproperty propertyname\n");    printf("Examples:\n");    printf("   slptool register service:myserv.x://myhost.com \"(attr1=val1),(attr2=val2)\"\n");    printf("   slptool findsrvs service:myserv.x\n");    printf("   slptool findsrvs service:myserv.x \"(attr1=val1)\"\n");#ifndef MI_NOT_SUPPORTED    printf("   slptool findsrvsusingiflist 10.77.13.240,192.168.250.240 service:myserv.x\n");    printf("   slptool findsrvsusingiflist 10.77.13.243 service:myserv.x \"(attr1=val1)\"\n");#endif /* MI_NOT_SUPPORTED */#ifndef UNICAST_NOT_SUPPORTED    printf("   slptool unicastfindsrvs 10.77.13.237 service:myserv.x\n");    printf("   slptool unicastfindsrvs 10.77.13.237 service:myserv.x \"(attr1=val1)\"\n");#endif    printf("   slptool findattrs service:myserv.x://myhost.com\n");    printf("   slptool findattrs service:myserv.x://myhost.com attr1\n");#ifndef UNICAST_NOT_SUPPORTED    printf("   slptool unicastfindattrs 10.77.13.237 service:myserv.x\n");    printf("   slptool unicastfindattrs 10.77.13.237 service:myserv.x://myhost.com attr1 \n");#endif#ifndef MI_NOT_SUPPORTED    printf("   slptool findattrsusingiflist 10.77.13.240,192.168.250.240 service:myserv.x://myhost.com\n");    printf("   slptool findattrsusingiflist 10.77.13.243 service:myserv.x://myhost.com attr1\n");#endif /* MI_NOT_SUPPORTED */    printf("   slptool deregister service:myserv.x://myhost.com\n");    printf("   slptool getproperty net.slp.useScopes\n");}/*=========================================================================*/int main(int argc, char* argv[])/*=========================================================================*/{    int                 result;    SLPToolCommandLine  cmdline;    /* zero out the cmdline */    memset(&cmdline,0,sizeof(cmdline));        /* Parse the command line */    if(ParseCommandLine(argc,argv,&cmdline) == 0)    {        switch(cmdline.cmd)        {        case FINDSRVS:            FindSrvs(&cmdline);            break;                #ifndef UNICAST_NOT_SUPPORTED        case UNICASTFINDSRVS:	    UnicastFindSrvs(&cmdline);            break;	#endif        case FINDATTRS:            FindAttrs(&cmdline);            break;                #ifndef UNICAST_NOT_SUPPORTED        case UNICASTFINDATTRS:	    UnicastFindAttrs(&cmdline);            break;	#endif        case FINDSRVTYPES:            FindSrvTypes(&cmdline);            break;	        #ifndef UNICAST_NOT_SUPPORTED        case UNICASTFINDSRVTYPES:	    UnicastFindSrvTypes(&cmdline);            break;	#endif	case FINDSCOPES:	    FindScopes(&cmdline);	    break;	           case GETPROPERTY:            GetProperty(&cmdline);            break;	 case REGISTER:            Register(&cmdline);            break;	 case DEREGISTER:            Deregister(&cmdline);            break;#ifndef MI_NOT_SUPPORTED	 case FINDSRVSUSINGIFLIST:            FindSrvsUsingIFList(&cmdline);            break;        case FINDATTRSUSINGIFLIST:            FindAttrsUsingIFList(&cmdline);            break;                case FINDSRVTYPESUSINGIFLIST:            FindSrvTypesUsingIFList(&cmdline);            break;#endif /* MI_NOT_SUPPORTED */	 case PRINT_VERSION:	    PrintVersion(&cmdline);	    break;	 case DUMMY:	    break;        }    }    else    {        DisplayUsage();        result = 1;    }    return 0;}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -