]> git.ipfire.org Git - thirdparty/freeradius-server.git/commitdiff
move conduit header to uint16 origin, uint16 conduit
authorAlan T. DeKok <aland@freeradius.org>
Tue, 10 Jul 2018 17:35:18 +0000 (13:35 -0400)
committerAlan T. DeKok <aland@freeradius.org>
Tue, 10 Jul 2018 20:58:01 +0000 (16:58 -0400)
so that we can distinguish different sources / destinations
of data

src/modules/proto_control/conduit.c
src/modules/proto_control/conduit.h
src/modules/proto_control/proto_control_unix.c

index 6712a13171227329b272d4c804c78deef567ffe7..d60719907fda54c0c2638db46e3b71a9bb7bd8fd 100644 (file)
@@ -54,8 +54,8 @@ static ssize_t lo_read(int fd, void *out, size_t outlen)
 /*
  *     A non-blocking copy of fr_conduit_read().
  */
-ssize_t fr_conduit_read_async(int fd, fr_conduit_type_t *pconduit, void *out, size_t outlen,
-                             size_t *leftover)
+ssize_t fr_conduit_read_async(int fd, fr_conduit_type_t *pconduit,
+                             void *out, size_t outlen, size_t *leftover)
 {
        ssize_t r;
        size_t data_len;
@@ -127,7 +127,7 @@ ssize_t fr_conduit_read_async(int fd, fr_conduit_type_t *pconduit, void *out, si
        offset += r;
 
        if (offset == outlen) {
-               *pconduit = ntohl(hdr.conduit);
+               *pconduit = ntohs(hdr.conduit);
 
                /*
                 *      The other end can't set this.
@@ -160,7 +160,7 @@ ssize_t fr_conduit_read(int fd, fr_conduit_type_t *pconduit, void *out, size_t o
        /*
         *      Read the data into the buffer.
         */
-       *pconduit = ntohl(hdr.conduit);
+       *pconduit = ntohs(hdr.conduit);
        data_len = ntohl(hdr.length);
        if (data_len == 0) return 0;
        if (data_len > UINT32_MAX) data_len = UINT32_MAX;       /* For Coverity */
@@ -237,7 +237,7 @@ ssize_t fr_conduit_write(int fd, fr_conduit_type_t conduit, void const *out, siz
                return -1;
        }
 
-       hdr.conduit = htonl(conduit);
+       hdr.conduit = htons(conduit);
        hdr.length = htonl(outlen);
 
 #if 0
index 3d9c896d534beabb1e5976c2f4a488e980bd6a54..0a89e5c7c9bb90c3d0977c951c72b0bb48beeda7 100644 (file)
@@ -43,6 +43,12 @@ typedef enum fr_conduit_type_t {
        FR_CONDUIT_WANT_MORE,
 } fr_conduit_type_t;
 
+typedef enum fr_conduit_origin_t {
+       FR_ORIGIN_SIGNAL = 0,
+       FR_ORIGIN_DEBUG,
+       FR_ORIGIN_WORKER,
+} fr_conduit_origin_t;
+
 typedef enum fr_conduit_result_t {
        FR_CONDUIT_FAIL = 0,
        FR_CONDUIT_SUCCESS
@@ -65,7 +71,8 @@ typedef struct fr_cs_buffer_t {
 } fr_cs_buffer_t;
 
 typedef struct fr_conduit_hdr_t {
-       uint32_t        conduit;
+       uint16_t        origin;
+       uint16_t        conduit;
        uint32_t        length;
 } fr_conduit_hdr_t;
 
index 048a06ffc12bc69deb4840bedd19bee7dad6a174..877eb8419fa8e8b5b7da10932e4d3d5caad3419f 100644 (file)
@@ -157,7 +157,7 @@ static ssize_t mod_read_init(void *instance, UNUSED void **packet_ctx, UNUSED fr
        fr_conduit_hdr_t                *hdr = (fr_conduit_hdr_t *) buffer;
        uint32_t                        magic;
 
-       if (htonl(hdr->conduit) != FR_CONDUIT_INIT_ACK) {
+       if (htons(hdr->conduit) != FR_CONDUIT_INIT_ACK) {
                DEBUG("ERROR: Connection is missing initial ACK packet.");
                return -1;
        }