/* (C) 2017 by sysmocom s.f.m.c. GmbH * All Rights Reserved * * Author: Philipp Maier * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU Affero General Public License as published by * the Free Software Foundation; either version 3 of the License, or * (at your option) any later version. * * 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 Affero General Public License for more details. * * You should have received a copy of the GNU Affero General Public License * along with this program. If not, see . * */ #pragma once /* Reset context data (callbacks, state machine etc...) */ struct a_reset_ctx { /* FSM instance, which handles the reset procedure */ struct osmo_fsm_inst *fsm; /* Connection failure counter. When this counter * reaches a certain threshold, the reset procedure * will be triggered */ int conn_loss_counter; /* A human readable name to display in the logs */ char name[256]; /* Callback function to be called when a connection * failure is detected and a rest must occur */ void (*cb)(void *priv); /* Privated data for the callback function */ void *priv; }; /* Create and start state machine which handles the reset/reset-ack procedure */ void a_reset_start(struct a_reset_ctx *reset); /* Confirm that we sucessfully received a reset acknowlege message */ void a_reset_ack_confirm(struct a_reset_ctx *reset); /* Report a failed connection */ void a_reset_conn_fail(struct a_reset_ctx *reset); /* Report a successful connection */ void a_reset_conn_success(struct a_reset_ctx *reset); /* Check if we have a connection to a specified msc */ bool a_reset_conn_ready(struct a_reset_ctx *reset);