From ee73b781c1e13daee67e149f1828d7166e5ea627 Mon Sep 17 00:00:00 2001
From: Dimitri Staessens <dimitri.staessens@ugent.be>
Date: Mon, 1 Oct 2018 17:35:31 +0200
Subject: ipcpd: Merge dt_pci into dt source

This merges the dt_pci code into the dt source. It simplifies the code
base, and allows inline compilation. Removes unnecessary includes.

Signed-off-by: Dimitri Staessens <dimitri.staessens@ugent.be>
Signed-off-by: Sander Vrijders <sander.vrijders@ugent.be>
---
 src/ipcpd/normal/CMakeLists.txt |   1 -
 src/ipcpd/normal/dt.c           | 100 +++++++++++++++++++++++++++++++----
 src/ipcpd/normal/dt.h           |   2 -
 src/ipcpd/normal/dt_pci.c       | 112 ----------------------------------------
 src/ipcpd/normal/dt_pci.h       |  67 ------------------------
 src/ipcpd/normal/fa.c           |   1 -
 6 files changed, 91 insertions(+), 192 deletions(-)
 delete mode 100644 src/ipcpd/normal/dt_pci.c
 delete mode 100644 src/ipcpd/normal/dt_pci.h

(limited to 'src')

diff --git a/src/ipcpd/normal/CMakeLists.txt b/src/ipcpd/normal/CMakeLists.txt
index 6dd68385..1cba7630 100644
--- a/src/ipcpd/normal/CMakeLists.txt
+++ b/src/ipcpd/normal/CMakeLists.txt
@@ -37,7 +37,6 @@ set(SOURCE_FILES
   dht.c
   dir.c
   dt.c
-  dt_pci.c
   enroll.c
   fa.c
   main.c
diff --git a/src/ipcpd/normal/dt.c b/src/ipcpd/normal/dt.c
index c0414007..c3f8f198 100644
--- a/src/ipcpd/normal/dt.c
+++ b/src/ipcpd/normal/dt.c
@@ -46,7 +46,6 @@
 #include "connmgr.h"
 #include "ipcp.h"
 #include "dt.h"
-#include "dt_pci.h"
 #include "pff.h"
 #include "routing.h"
 #include "sdu_sched.h"
@@ -73,6 +72,89 @@ struct comp_info {
         char * name;
 };
 
+/* Abstract syntax */
+enum dtp_fields {
+        DTP_DST = 0,   /* DST ADDRESS      */
+        DTP_QOS,       /* QOS ID           */
+        DTP_DEID,      /* DST Endpoint ID  */
+        DTP_TTL,       /* TTL FIELD        */
+        DTP_NUM_FIELDS /* Number of fields */
+};
+
+/* Fixed field lengths */
+#define TTL_LEN 1
+#define QOS_LEN 1
+
+struct dt_pci {
+        uint64_t  dst_addr;
+        qoscube_t qc;
+        uint8_t   ttl;
+        uint32_t  eid;
+};
+
+struct {
+        uint8_t         addr_size;
+        uint8_t         eid_size;
+        size_t          head_size;
+
+        /* Offsets */
+        size_t          qc_o;
+        size_t          ttl_o;
+        size_t          eid_o;
+
+        /* Initial TTL value */
+        uint8_t         max_ttl;
+} dt_pci_info;
+
+static int dt_pci_ser(struct shm_du_buff * sdb,
+                      struct dt_pci *      dt_pci)
+{
+        uint8_t * head;
+        uint8_t   ttl = dt_pci_info.max_ttl;
+
+        assert(sdb);
+        assert(dt_pci);
+
+        head = shm_du_buff_head_alloc(sdb, dt_pci_info.head_size);
+        if (head == NULL)
+                return -EPERM;
+
+        /* FIXME: Add check and operations for Big Endian machines. */
+        memcpy(head, &dt_pci->dst_addr, dt_pci_info.addr_size);
+        memcpy(head + dt_pci_info.qc_o, &dt_pci->qc, QOS_LEN);
+        memcpy(head + dt_pci_info.ttl_o, &ttl, TTL_LEN);
+        memcpy(head + dt_pci_info.eid_o, &dt_pci->eid, dt_pci_info.eid_size);
+
+        return 0;
+}
+
+static void dt_pci_des(struct shm_du_buff * sdb,
+                       struct dt_pci *      dt_pci)
+{
+        uint8_t * head;
+
+        assert(sdb);
+        assert(dt_pci);
+
+        head = shm_du_buff_head(sdb);
+
+        /* Decrease TTL */
+        --*(head + dt_pci_info.ttl_o);
+
+        /* FIXME: Add check and operations for Big Endian machines. */
+        memcpy(&dt_pci->dst_addr, head, dt_pci_info.addr_size);
+        memcpy(&dt_pci->qc, head + dt_pci_info.qc_o, QOS_LEN);
+        memcpy(&dt_pci->ttl, head + dt_pci_info.ttl_o, TTL_LEN);
+        memcpy(&dt_pci->eid, head + dt_pci_info.eid_o, dt_pci_info.eid_size);
+}
+
+static void dt_pci_shrink(struct shm_du_buff * sdb)
+{
+        assert(sdb);
+
+        shm_du_buff_head_release(sdb, dt_pci_info.head_size);
+}
+
 struct {
         struct sdu_sched * sdu_sched;
 
@@ -559,10 +641,14 @@ int dt_init(enum pol_routing pr,
         info.pref_syntax  = PROTO_FIXED;
         info.addr         = ipcpi.dt_addr;
 
-        if (dt_pci_init(addr_size, eid_size, max_ttl)) {
-                log_err("Failed to init shm dt_pci.");
-                goto fail_pci_init;
-        }
+        dt_pci_info.addr_size = addr_size;
+        dt_pci_info.eid_size  = eid_size;
+        dt_pci_info.max_ttl   = max_ttl;
+
+        dt_pci_info.qc_o      = dt_pci_info.addr_size;
+        dt_pci_info.ttl_o     = dt_pci_info.qc_o + QOS_LEN;
+        dt_pci_info.eid_o     = dt_pci_info.ttl_o + TTL_LEN;
+        dt_pci_info.head_size = dt_pci_info.eid_o + dt_pci_info.eid_size;
 
         if (notifier_reg(handle_event, NULL)) {
                 log_err("Failed to register with notifier.");
@@ -646,8 +732,6 @@ int dt_init(enum pol_routing pr,
  fail_connmgr_comp_init:
         notifier_unreg(&handle_event);
  fail_notifier_reg:
-        dt_pci_fini();
- fail_pci_init:
         return -1;
 }
 
@@ -675,8 +759,6 @@ void dt_fini(void)
         connmgr_comp_fini(COMPID_DT);
 
         notifier_unreg(&handle_event);
-
-        dt_pci_fini();
 }
 
 int dt_start(void)
diff --git a/src/ipcpd/normal/dt.h b/src/ipcpd/normal/dt.h
index e0bbe3f3..a17098b7 100644
--- a/src/ipcpd/normal/dt.h
+++ b/src/ipcpd/normal/dt.h
@@ -26,8 +26,6 @@
 #include <ouroboros/ipcp.h>
 #include <ouroboros/shm_rdrbuff.h>
 
-#include "dt_pci.h"
-
 #define DT_COMP      "Data Transfer"
 #define DT_PROTO     "dtp"
 #define INVALID_ADDR 0
diff --git a/src/ipcpd/normal/dt_pci.c b/src/ipcpd/normal/dt_pci.c
deleted file mode 100644
index 76304668..00000000
--- a/src/ipcpd/normal/dt_pci.c
+++ /dev/null
@@ -1,112 +0,0 @@
-/*
- * Ouroboros - Copyright (C) 2016 - 2018
- *
- * Protocol Control Information of Data Transfer Component
- *
- *    Dimitri Staessens <dimitri.staessens@ugent.be>
- *    Sander Vrijders   <sander.vrijders@ugent.be>
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License version 2 as
- * published by the Free Software Foundation.
- *
- * 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, write to the Free Software
- * Foundation, Inc., http://www.fsf.org/about/contact/.
- */
-
-#include <ouroboros/errno.h>
-
-#include "dt_pci.h"
-
-#include <stdlib.h>
-#include <string.h>
-#include <assert.h>
-
-struct {
-        uint8_t         addr_size;
-        uint8_t         eid_size;
-        size_t          head_size;
-
-        /* Offsets */
-        size_t          qc_o;
-        size_t          ttl_o;
-        size_t          eid_o;
-
-        /* Initial TTL value */
-        uint8_t         max_ttl;
-} dt_pci_info;
-
-int dt_pci_init(uint8_t addr_size,
-                uint8_t eid_size,
-                uint8_t max_ttl)
-{
-        dt_pci_info.addr_size = addr_size;
-        dt_pci_info.eid_size  = eid_size;
-        dt_pci_info.max_ttl   = max_ttl;
-
-        dt_pci_info.qc_o      = dt_pci_info.addr_size;
-        dt_pci_info.ttl_o     = dt_pci_info.qc_o + QOS_LEN;
-        dt_pci_info.eid_o     = dt_pci_info.ttl_o + TTL_LEN;
-        dt_pci_info.head_size = dt_pci_info.eid_o + dt_pci_info.eid_size;
-
-        return 0;
-}
-
-void dt_pci_fini(void) {
-        return;
-}
-
-int dt_pci_ser(struct shm_du_buff * sdb,
-               struct dt_pci *      dt_pci)
-{
-        uint8_t * head;
-        uint8_t   ttl = dt_pci_info.max_ttl;
-
-        assert(sdb);
-        assert(dt_pci);
-
-        head = shm_du_buff_head_alloc(sdb, dt_pci_info.head_size);
-        if (head == NULL)
-                return -EPERM;
-
-        /* FIXME: Add check and operations for Big Endian machines. */
-        memcpy(head, &dt_pci->dst_addr, dt_pci_info.addr_size);
-        memcpy(head + dt_pci_info.qc_o, &dt_pci->qc, QOS_LEN);
-        memcpy(head + dt_pci_info.ttl_o, &ttl, TTL_LEN);
-        memcpy(head + dt_pci_info.eid_o, &dt_pci->eid, dt_pci_info.eid_size);
-
-        return 0;
-}
-
-void dt_pci_des(struct shm_du_buff * sdb,
-                struct dt_pci *      dt_pci)
-{
-        uint8_t * head;
-
-        assert(sdb);
-        assert(dt_pci);
-
-        head = shm_du_buff_head(sdb);
-
-        /* Decrease TTL */
-        --*(head + dt_pci_info.ttl_o);
-
-        /* FIXME: Add check and operations for Big Endian machines. */
-        memcpy(&dt_pci->dst_addr, head, dt_pci_info.addr_size);
-        memcpy(&dt_pci->qc, head + dt_pci_info.qc_o, QOS_LEN);
-        memcpy(&dt_pci->ttl, head + dt_pci_info.ttl_o, TTL_LEN);
-        memcpy(&dt_pci->eid, head + dt_pci_info.eid_o, dt_pci_info.eid_size);
-}
-
-void dt_pci_shrink(struct shm_du_buff * sdb)
-{
-        assert(sdb);
-
-        shm_du_buff_head_release(sdb, dt_pci_info.head_size);
-}
diff --git a/src/ipcpd/normal/dt_pci.h b/src/ipcpd/normal/dt_pci.h
deleted file mode 100644
index 8022f84a..00000000
--- a/src/ipcpd/normal/dt_pci.h
+++ /dev/null
@@ -1,67 +0,0 @@
-/*
- * Ouroboros - Copyright (C) 2016 - 2018
- *
- * Protocol Control Information of Data Transfer Component
- *
- *    Dimitri Staessens <dimitri.staessens@ugent.be>
- *    Sander Vrijders   <sander.vrijders@ugent.be>
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License version 2 as
- * published by the Free Software Foundation.
- *
- * 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, write to the Free Software
- * Foundation, Inc., http://www.fsf.org/about/contact/.
- */
-
-#ifndef OUROBOROS_IPCPD_NORMAL_DT_PCI_H
-#define OUROBOROS_IPCPD_NORMAL_DT_PCI_H
-
-#include <ouroboros/shm_du_buff.h>
-#include <ouroboros/proto.h>
-#include <ouroboros/qoscube.h>
-
-#include <stdint.h>
-#include <stdbool.h>
-
-/* Abstract syntax */
-enum dtp_fields {
-        DTP_DST = 0,   /* DST ADDRESS      */
-        DTP_QOS,       /* QOS ID           */
-        DTP_DEID,      /* DST Endpoint ID  */
-        DTP_TTL,       /* TTL FIELD        */
-        DTP_NUM_FIELDS /* Number of fields */
-};
-
-/* Fixed field lengths */
-#define TTL_LEN 1
-#define QOS_LEN 1
-
-struct dt_pci {
-        uint64_t  dst_addr;
-        qoscube_t qc;
-        uint8_t   ttl;
-        uint32_t  eid;
-};
-
-int   dt_pci_init(uint8_t addr_size,
-                  uint8_t eid_size,
-                  uint8_t max_ttl);
-
-void  dt_pci_fini(void);
-
-int   dt_pci_ser(struct shm_du_buff * sdb,
-                 struct dt_pci *      dt_pci);
-
-void  dt_pci_des(struct shm_du_buff * sdb,
-                 struct dt_pci *      dt_pci);
-
-void  dt_pci_shrink(struct shm_du_buff * sdb);
-
-#endif /* OUROBOROS_IPCPD_NORMAL_DT_PCI_H */
diff --git a/src/ipcpd/normal/fa.c b/src/ipcpd/normal/fa.c
index 87167131..10f0a863 100644
--- a/src/ipcpd/normal/fa.c
+++ b/src/ipcpd/normal/fa.c
@@ -38,7 +38,6 @@
 #include <ouroboros/ipcp-dev.h>
 
 #include "dir.h"
-#include "dt_pci.h"
 #include "fa.h"
 #include "sdu_sched.h"
 #include "ipcp.h"
-- 
cgit v1.2.3