This patch adds an extern "C" guard in libqrtr.h, so that it can be
included in both C and C++ projects.
Signed-off-by: Ben Chan <benchan@chromium.org>
This include provides err, errx, etc. but it looks like all
error logging in qmi.c is done with fprintf, so there's no
reason to include it.
Change-Id: I4f4a71323a55fca981ef8df994fe624a590e3802
Definition of AF_QIPCRTR was introduced in glibc in the following
commit and is only available since glibc 2.25 or later.
https://sourceware.org/git/?p=glibc.git;a=commit;h=acaff9b658720e4c887f4e44e6f28962d6f372d3
This patch modifies libqrtr.h to define AF_QIPCRTR if it isn't defined
in libc header, which allows compilation of libqrtr on a system with an
older version of glibc. The compiled libqrtr can still be used on a
system with kernel 4.7 or later with the QIPCRTR support.
Signed-off-by: Ben Chan <benchan@chromium.org>
The QMI functions can be used to deal with QMI-encoded data in
qrtr_packet objects. The structure-description is the same element-info
arrays as is used in the upstream Linux kernel.
Signed-off-by: Bjorn Andersson <bjorn.andersson@linaro.org>
The qrtr_decode() takes a buffer of data and returns a decoded qrtr
packet object, this will either contain control data or a reference to
the message data.
Signed-off-by: Bjorn Andersson <bjorn.andersson@linaro.org>
The uapi qrtr.h is extended with additional types and constants. Drop
the local qrtr.h to use the one from linux-headers and extend it
conditionally while we're waiting for the updated file.
Signed-off-by: Bjorn Andersson <bjorn.andersson@linaro.org>
When sending a new_server message to the qrtr-ns the node and port in
the packet is ignored (to not allow clients spoofing the information),
so there's no reason to have this artificial check in the
qrtr_new_server() implementation either.
The socket will be bound to a port automatically when the new_server
message is sent out.
Signed-off-by: Bjorn Andersson <bjorn.andersson@linaro.org>
There's no reason to require that the socket to be bound to a specific
port in order to register a lookup, the transmission of the lookup
request will autobind the socket to a port for us.
Also drop the node and port from the payload, as qrtr-ns will register
the lookup on the source sq, rather than the passed port.
Signed-off-by: Bjorn Andersson <bjorn.andersson@linaro.org>
Fix up the handling of endian translation and add support for decoding
new and del server messages.
Signed-off-by: Bjorn Andersson <bjorn.andersson@linaro.org>
The two added functions can be used by an application to check if a
sockaddr is from the control port and for parsing the control messages
that is passed to registered clients.
Signed-off-by: Bjorn Andersson <bjorn.andersson@linaro.org>
Now that we have moved all operations to the control socket we can
remove the ns handler. The query function in the library is racy, as
there might be non-response messages in our incoming buffer when we
start reading, so this is dropped too - rather than just being
translated to the new interface.
Signed-off-by: Bjorn Andersson <bjorn.andersson@linaro.org>
Introduce a subscription based lookup model, in order for a client to be
able to listen to a future spawning service. The client can register any
number of queries with the ns and the ns will post lookup-results as
services are registred.
As a special case the list of lookup-results that is sent out as a
result of the registration of a new lookup will be finished by an empty
lookup response, allowing tools like qrtr-lookup to terminate as the
entire list of currently registed services is received.
Signed-off-by: Bjorn Andersson <bjorn.andersson@linaro.org>
Replace the implementation of the two library functions with calls to
the new APIs, so that we can remove the server-side implementation of
the previous messages.
Signed-off-by: Bjorn Andersson <bjorn.andersson@linaro.org>
Add a new set of operations to libqrtr for sending registration events
to the control service, rather than using the nameservice port.
Signed-off-by: Bjorn Andersson <bjorn.andersson@linaro.org>
Extract the libqrtr source and header file to a separate directory,
making it more convinient to include the header file from other
projects.
Signed-off-by: Bjorn Andersson <bjorn.andersson@linaro.org>