{
int ret;
pid_t pid;
+ uint32_t major_version, minor_version;
ssize_t size;
enum lttng_domain_type domain;
struct agent_app *app;
size = new_sock->ops->recvmsg(new_sock, &msg, sizeof(msg), 0);
if (size < sizeof(msg)) {
- ret = -errno;
+ ret = -EINVAL;
goto error_socket;
}
domain = be32toh(msg.domain);
pid = be32toh(msg.pid);
+ major_version = be32toh(msg.major_version);
+ minor_version = be32toh(msg.minor_version);
+
+ /* Test communication protocol version of the registring agent. */
+ if (major_version != AGENT_MAJOR_VERSION) {
+ ret = -EINVAL;
+ goto error_socket;
+ }
+ if (minor_version != AGENT_MINOR_VERSION) {
+ ret = -EINVAL;
+ goto error_socket;
+ }
DBG2("[agent-thread] New registration for pid %d domain %d on socket %d",
pid, domain, new_sock->fd);