- ret = sscanf(path, "net%d://", &proto);
- if (ret < 1) {
- proto = 4;
- /* net:// */
- proto_offset = strlen("net://");
- } else {
- /* net4:// or net6:// */
- proto_offset = strlen("netX://");
- }
- if (proto_offset > path_len) {
- goto end;
- }
- if (proto == 6) {
- BT_LOGW("IPv6 is currently unsupported by lttng-live");
- goto end;
- }
- /* TODO : parse for IPv6 as well */
- /* Parse the hostname or IP */
- ret = sscanf(&path[proto_offset], "%[a-zA-Z.0-9%-]%s",
- viewer_connection->relay_hostname, remain[0]);
- if (ret == 2) {
- /* Optional port number */
- switch (remain[0][0]) {
- case ':':
- ret = sscanf(remain[0], ":%d%s", &viewer_connection->port, remain[1]);
- /* Optional session ID with port number */
- if (ret == 2) {
- ret = sscanf(remain[1], "/%s", remain[2]);
- /* Accept 0 or 1 (optional) */
- if (ret < 0) {
- goto end;
- }
- } else if (ret == 0) {
- BT_LOGW("Missing port number after delimitor ':'");
- ret = -1;
- goto end;
- }
- break;
- case '/':
- /* Optional session ID */
- ret = sscanf(remain[0], "/%s", remain[2]);
- /* Accept 0 or 1 (optional) */
- if (ret < 0) {
- goto end;
- }
- break;
- default:
- BT_LOGW("wrong delimitor : %c", remain[0][0]);
- ret = -1;
- goto end;
- }
- }