From d80193ca36f9ca516fbb1ee3a55c7eece3a6c90c Mon Sep 17 00:00:00 2001 From: Volker Lendecke Date: Tue, 16 Sep 2014 14:09:35 +0200 Subject: [PATCH] messaging: Define a binary format for message headers Signed-off-by: Volker Lendecke Reviewed-by: Stefan Metzmacher --- source3/lib/messages_util.c | 41 +++++++++++++++++++++++++++++++++++++++++ source3/lib/messages_util.h | 33 +++++++++++++++++++++++++++++++++ source3/wscript_build | 5 +++++ 3 files changed, 79 insertions(+) create mode 100644 source3/lib/messages_util.c create mode 100644 source3/lib/messages_util.h diff --git a/source3/lib/messages_util.c b/source3/lib/messages_util.c new file mode 100644 index 00000000000..24c364c145e --- /dev/null +++ b/source3/lib/messages_util.c @@ -0,0 +1,41 @@ +/* + * Unix SMB/CIFS implementation. + * Samba internal messaging functions + * Copyright (C) 2013 by Volker Lendecke + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include "replace.h" +#include "lib/util/samba_util.h" +#include "librpc/gen_ndr/server_id.h" +#include "lib/util/byteorder.h" +#include "messages_util.h" + +void message_hdr_put(uint8_t buf[MESSAGE_HDR_LENGTH], uint32_t msg_type, + struct server_id src, struct server_id dst) +{ + server_id_put(buf, dst); + server_id_put(buf + 24, src); + SIVAL(buf, 48, msg_type); +} + +void message_hdr_get(uint32_t *msg_type, struct server_id *src, + struct server_id *dst, + const uint8_t buf[MESSAGE_HDR_LENGTH]) +{ + server_id_get(dst, buf); + server_id_get(src, buf + 24); + *msg_type = IVAL(buf, 48); +} diff --git a/source3/lib/messages_util.h b/source3/lib/messages_util.h new file mode 100644 index 00000000000..5b22f5e9865 --- /dev/null +++ b/source3/lib/messages_util.h @@ -0,0 +1,33 @@ +/* + * Unix SMB/CIFS implementation. + * Samba internal messaging functions + * Copyright (C) 2013 by Volker Lendecke + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#ifndef _MESSAGES_UTIL_H_ +#define _MESSAGES_UTIL_H_ + +struct message_hdr; + +#define MESSAGE_HDR_LENGTH 52 + +void message_hdr_put(uint8_t buf[MESSAGE_HDR_LENGTH], uint32_t msg_type, + struct server_id src, struct server_id dst); +void message_hdr_get(uint32_t *msg_type, struct server_id *src, + struct server_id *dst, + const uint8_t buf[MESSAGE_HDR_LENGTH]); + +#endif diff --git a/source3/wscript_build b/source3/wscript_build index cb17ab49772..ce8ee13cfea 100755 --- a/source3/wscript_build +++ b/source3/wscript_build @@ -313,6 +313,11 @@ bld.SAMBA3_LIBRARY('messages_dgm', deps='talloc UNIX_MSG POLL_FUNCS_TEVENT samba-debug', private_library=True) +bld.SAMBA3_LIBRARY('messages_util', + source='''lib/messages_util.c''', + deps='samba-util', + private_library=True) + bld.SAMBA3_SUBSYSTEM('samba3core', source='''lib/messages.c lib/util_cluster.c -- 2.11.4.GIT