/** Create a network
*
* @param[in] ctx the talloc ctx
+ * @param[in] el the event list
* @param[in] logger the destination for all logging messages
* @return
* - NULL on error
* - fr_network_t on success
*/
-fr_network_t *fr_network_create(TALLOC_CTX *ctx, fr_log_t *logger)
+fr_network_t *fr_network_create(TALLOC_CTX *ctx, fr_event_list_t *el, fr_log_t *logger)
{
fr_network_t *nr;
return NULL;
}
- nr->el = fr_event_list_alloc(nr, NULL, NULL);
- if (!nr->el) {
- fr_strerror_printf("Failed creating event list: %s", fr_strerror());
- talloc_free(nr);
- return NULL;
- }
-
+ nr->el = el;
nr->log = logger;
nr->kq = fr_event_list_kq(nr->el);
typedef struct fr_network_t fr_network_t;
-fr_network_t *fr_network_create(TALLOC_CTX *ctx, fr_log_t *logger);
-void fr_network_exit(fr_network_t *nr);
+fr_network_t *fr_network_create(TALLOC_CTX *ctx, fr_event_list_t *el, fr_log_t *logger) CC_HINT(nonnull(2,3));;
+void fr_network_exit(fr_network_t *nr) CC_HINT(nonnull);;
int fr_network_destroy(fr_network_t *nr) CC_HINT(nonnull);
void fr_network(fr_network_t *nr) CC_HINT(nonnull);
fr_schedule_network_t *sn = arg;
fr_schedule_t *sc = sn->sc;
fr_schedule_child_status_t status = FR_CHILD_FAIL;
+ fr_event_list_t *el;
fr_log(sc->log, L_INFO, "Network %d starting\n", sn->id);
goto fail;
}
- sn->rc = fr_network_create(ctx, sc->log);
+ el = fr_event_list_alloc(ctx, NULL, NULL);
+ if (!el) {
+ fr_log(sc->log, L_ERR, "Network %d - Failed creating event list: %s",
+ sn->id, fr_strerror());
+ goto fail;
+ }
+
+ sn->rc = fr_network_create(ctx, el, sc->log);
if (!sn->rc) {
fr_log(sc->log, L_ERR, "Network %d - Failed creating network: %s", sn->id, fr_strerror());
goto fail;