mirror of
https://github.com/linux-msm/qrtr.git
synced 2026-01-18 01:30:08 +01:00
lookup: Report service, version and instance separate
Instead of reporting "service" as id:instance split the "instance" in version and instance and present the three entities separately. Signed-off-by: Bjorn Andersson <bjorn.andersson@linaro.org>
This commit is contained in:
36
src/lookup.c
36
src/lookup.c
@@ -83,6 +83,11 @@ int main(int argc, char **argv)
|
||||
{
|
||||
struct qrtr_ctrl_pkt pkt;
|
||||
struct sockaddr_qrtr sq;
|
||||
unsigned int instance;
|
||||
unsigned int service;
|
||||
unsigned int version;
|
||||
unsigned int node;
|
||||
unsigned int port;
|
||||
socklen_t sl = sizeof(sq);
|
||||
struct timeval tv;
|
||||
int sock;
|
||||
@@ -126,13 +131,12 @@ int main(int argc, char **argv)
|
||||
if (rc < 0)
|
||||
err(1, "sendto()");
|
||||
|
||||
printf(" Service Node Port\n");
|
||||
printf(" Service Version Instance Node Port\n");
|
||||
|
||||
while ((len = recv(sock, &pkt, sizeof(pkt), 0)) > 0) {
|
||||
unsigned int type = le32_to_cpu(pkt.cmd);
|
||||
const char *name = NULL;
|
||||
unsigned int i;
|
||||
char srv_buf[32];
|
||||
|
||||
if (len < sizeof(pkt) || type != QRTR_CMD_NEW_SERVER) {
|
||||
warn("invalid/short packet");
|
||||
@@ -143,27 +147,27 @@ int main(int argc, char **argv)
|
||||
!pkt.server.node && !pkt.server.port)
|
||||
break;
|
||||
|
||||
pkt.server.service = le32_to_cpu(pkt.server.service);
|
||||
pkt.server.instance = le32_to_cpu(pkt.server.instance);
|
||||
pkt.server.node = le32_to_cpu(pkt.server.node);
|
||||
pkt.server.port = le32_to_cpu(pkt.server.port);
|
||||
service = le32_to_cpu(pkt.server.service);
|
||||
version = le32_to_cpu(pkt.server.instance) & 0xff;
|
||||
instance = le32_to_cpu(pkt.server.instance) >> 8;
|
||||
node = le32_to_cpu(pkt.server.node);
|
||||
port = le32_to_cpu(pkt.server.port);
|
||||
|
||||
for (i = 0; i < sizeof(common_names)/sizeof(common_names[0]); ++i) {
|
||||
if (pkt.server.service != common_names[i].service)
|
||||
if (service != common_names[i].service)
|
||||
continue;
|
||||
if (pkt.server.instance &&
|
||||
(pkt.server.instance & common_names[i].ifilter) != common_names[i].ifilter)
|
||||
if (instance &&
|
||||
(instance & common_names[i].ifilter) != common_names[i].ifilter)
|
||||
continue;
|
||||
name = common_names[i].name;
|
||||
}
|
||||
|
||||
snprintf(srv_buf, sizeof(srv_buf), "%d:%d",
|
||||
pkt.server.service, pkt.server.instance);
|
||||
|
||||
printf("%9s %4d %5d (%s)\n",
|
||||
srv_buf,
|
||||
pkt.server.node,
|
||||
pkt.server.port,
|
||||
printf("%9d %7d %8d %4d %5d %s\n",
|
||||
service,
|
||||
version,
|
||||
instance,
|
||||
node,
|
||||
port,
|
||||
name ? name : "<unknown>");
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user