summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authordimitri staessens <dimitri.staessens@ugent.be>2017-05-02 11:38:39 +0200
committerdimitri staessens <dimitri.staessens@ugent.be>2017-05-02 11:38:39 +0200
commit9b8b1412c3c4a80df713abd02f172d87397adaf0 (patch)
tree7981d1887add4a291bafc321bd67a4daa4b0686b
parented9e4a4fc1eaad3f5f08106e6048b92094a6a70b (diff)
downloadouroboros-9b8b1412c3c4a80df713abd02f172d87397adaf0.tar.gz
ouroboros-9b8b1412c3c4a80df713abd02f172d87397adaf0.zip
ipcpd: Don't send deallocation messages
The flow resources are Delta-t protocol machines that will time out and free their resources without any required signaling. Flows can be cleaned locally when the application requests it and all FRCT instances have timed out and released their resources.
-rw-r--r--src/ipcpd/normal/fa.c38
-rw-r--r--src/ipcpd/normal/flow_alloc.proto1
2 files changed, 0 insertions, 39 deletions
diff --git a/src/ipcpd/normal/fa.c b/src/ipcpd/normal/fa.c
index 6ea5b711..3aa2634a 100644
--- a/src/ipcpd/normal/fa.c
+++ b/src/ipcpd/normal/fa.c
@@ -293,35 +293,6 @@ int fa_alloc_resp(int fd,
int fa_dealloc(int fd)
{
- flow_alloc_msg_t msg = FLOW_ALLOC_MSG__INIT;
- struct shm_du_buff * sdb;
- qoscube_t qc;
- uint64_t addr;
-
- msg.code = FLOW_ALLOC_CODE__FLOW_DEALLOC;
- msg.has_cep_id = true;
-
- pthread_rwlock_rdlock(&fa.flows_lock);
-
- msg.cep_id = frct_i_get_id(fa.fd_to_cep_id[fd]);
-
- addr = frct_i_get_addr(fa.fd_to_cep_id[fd]);
-
- pthread_rwlock_unlock(&fa.flows_lock);
-
- sdb = create_fa_sdb(&msg);
- if (sdb == NULL)
- return -1;
-
- ipcp_flow_get_qoscube(fd, &qc);
-
- assert(qc >= 0 && qc < QOS_CUBE_MAX);
-
- if (dt_write_sdu(addr, qc, PDU_TYPE_FA, sdb)) {
- ipcp_sdb_release(sdb);
- log_warn("Failed to send dealloc message.");
- }
-
ipcp_flow_fini(fd);
pthread_rwlock_wrlock(&fa.flows_lock);
@@ -438,15 +409,6 @@ int fa_post_sdu(struct shm_du_buff * sdb)
pthread_rwlock_unlock(&fa.flows_lock);
break;
- case FLOW_ALLOC_CODE__FLOW_DEALLOC:
- /* FIXME: mark flow and wait for frct_i to time out */
- pthread_rwlock_rdlock(&fa.flows_lock);
- fd = fa.cep_id_to_fd[msg->cep_id];
- pthread_rwlock_unlock(&fa.flows_lock);
- ipcp_flow_fini(fd);
- sdu_sched_del(fa.sdu_sched, fd);
- flow_dealloc(fd);
- break;
default:
log_err("Got an unknown flow allocation message.");
flow_alloc_msg__free_unpacked(msg, NULL);
diff --git a/src/ipcpd/normal/flow_alloc.proto b/src/ipcpd/normal/flow_alloc.proto
index ee7f96e8..947ce86b 100644
--- a/src/ipcpd/normal/flow_alloc.proto
+++ b/src/ipcpd/normal/flow_alloc.proto
@@ -25,7 +25,6 @@ syntax = "proto2";
enum flow_alloc_code {
FLOW_REQ = 1;
FLOW_REPLY = 2;
- FLOW_DEALLOC = 3;
};
message flow_alloc_msg {