bsc_nat: Drop redundant ccon ptr in bsc_cmd_list

It can be obtained from cmd field, so no need to store it in pending.
This way we simplify the ad-hoc struct bsc_cmd_list.

Change-Id: I6de64fc128ad623ca30b9e6cebebaff8de18f95d
diff --git a/include/osmocom/bsc/bsc_nat.h b/include/osmocom/bsc/bsc_nat.h
index 452daf2..6146c00 100644
--- a/include/osmocom/bsc/bsc_nat.h
+++ b/include/osmocom/bsc/bsc_nat.h
@@ -70,9 +70,6 @@
 	/* The NATed ID used on the bsc_con*/
 	int nat_id;
 
-	/* The control connection from which the command originated */
-	struct ctrl_connection *ccon;
-
 	/* The command from the control connection */
 	struct ctrl_cmd *cmd;
 };
diff --git a/src/osmo-bsc_nat/bsc_nat.c b/src/osmo-bsc_nat/bsc_nat.c
index a5dbf97..af97c57 100644
--- a/src/osmo-bsc_nat/bsc_nat.c
+++ b/src/osmo-bsc_nat/bsc_nat.c
@@ -935,7 +935,7 @@
 	llist_for_each_entry_safe(cmd_entry, cmd_tmp, &connection->cmd_pending, list_entry) {
 		cmd_entry->cmd->type = CTRL_TYPE_ERROR;
 		cmd_entry->cmd->reply = "BSC closed the connection";
-		ctrl_cmd_send(&cmd_entry->ccon->write_queue, cmd_entry->cmd);
+		ctrl_cmd_send(&cmd_entry->cmd->ccon->write_queue, cmd_entry->cmd);
 		bsc_nat_ctrl_del_pending(cmd_entry);
 	}
 
diff --git a/src/osmo-bsc_nat/bsc_nat_ctrl.c b/src/osmo-bsc_nat/bsc_nat_ctrl.c
index 5d551ac..7df3ca3 100644
--- a/src/osmo-bsc_nat/bsc_nat_ctrl.c
+++ b/src/osmo-bsc_nat/bsc_nat_ctrl.c
@@ -149,7 +149,7 @@
 				cmd->reply = "OOM";
 				goto err;
 			}
-			ctrl_cmd_send(&pending->ccon->write_queue, cmd);
+			ctrl_cmd_send(&pending->cmd->ccon->write_queue, cmd);
 			bsc_nat_ctrl_del_pending(pending);
 		} else {
 			/* We need to handle TRAPS here */
@@ -177,7 +177,7 @@
 	LOGP(DNAT, LOGL_ERROR, "Command timed out\n");
 	pending->cmd->type = CTRL_TYPE_ERROR;
 	pending->cmd->reply = "Command timed out";
-	ctrl_cmd_send(&pending->ccon->write_queue, pending->cmd);
+	ctrl_cmd_send(&pending->cmd->ccon->write_queue, pending->cmd);
 
 	bsc_nat_ctrl_del_pending(pending);
 }
@@ -189,7 +189,7 @@
 
 	llist_for_each_entry(bsc, &g_nat->bsc_connections, list_entry) {
 		llist_for_each_entry_safe(pending, tmp, &bsc->cmd_pending, list_entry) {
-			if (pending->ccon == connection)
+			if (pending->cmd->ccon == connection)
 				bsc_nat_ctrl_del_pending(pending);
 		}
 	}
@@ -276,8 +276,7 @@
 			cmd->reply = "Sending failed";
 			goto err;
 		}
-		pending->ccon = cmd->ccon;
-		pending->ccon->closed_cb = ctrl_conn_closed_cb;
+		cmd->ccon->closed_cb = ctrl_conn_closed_cb;
 		pending->cmd = cmd;
 
 		/* Setup the timeout */