/** * Initialize the IB connection. * * Initializes an IronBee connection from a ATS continuation * * @param[in] iconn IB connection * @param[in] ssn Session context data * * @returns status */ static ib_status_t ironbee_conn_init( tsib_ssn_ctx *ssndata) { assert(ssndata != NULL); const struct sockaddr *addr; int port; ib_conn_t *iconn = ssndata->iconn; /* remote ip */ addr = TSHttpTxnClientAddrGet(ssndata->txnp); addr2str(addr, ssndata->remote_ip, &port); iconn->remote_ipstr = ssndata->remote_ip; /* remote port */ iconn->remote_port = port; /* local end */ addr = TSHttpTxnIncomingAddrGet(ssndata->txnp); addr2str(addr, ssndata->local_ip, &port); iconn->local_ipstr = ssndata->local_ip; /* local_port */ iconn->local_port = port; return IB_OK; }
static ib_status_t ironbee_conn_init(ib_engine_t *ib, ib_conn_t *iconn, void *cbdata) { /* when does this happen? */ ib_status_t rc; const struct sockaddr *addr; int port; TSCont contp = iconn->pctx; ib_ssn_ctx* data = TSContDataGet(contp); // ib_clog_debug(....); /* remote ip */ addr = TSHttpTxnClientAddrGet(data->txnp); addr2str(addr, data->remote_ip, &port); iconn->remote_ipstr = data->remote_ip; rc = ib_data_add_bytestr(iconn->dpi, "remote_ip", (uint8_t *)iconn->remote_ipstr, strlen(data->remote_ip), NULL); if (rc != IB_OK) { return rc; } /* remote port */ iconn->remote_port = port; rc = ib_data_add_num(iconn->dpi, "remote_port", port, NULL); if (rc != IB_OK) { return rc; } /* local end */ addr = TSHttpTxnIncomingAddrGet(data->txnp); addr2str(addr, data->local_ip, &port); iconn->local_ipstr = data->local_ip; rc = ib_data_add_bytestr(iconn->dpi, "local_ip", (uint8_t *)iconn->local_ipstr, strlen(data->local_ip), NULL); if (rc != IB_OK) { return rc; } /* local_port */ iconn->local_port = port; rc = ib_data_add_num(iconn->dpi, "local_port", port, NULL); if (rc != IB_OK) { return rc; } return IB_OK; }