📄 slptool.c
字号:
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 + -