From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Date: Tue, 11 Feb 2014 16:32:24 +0100 From: Andrew Lunn Message-ID: <20140211153224.GB24633@lunn.ch> References: <1392122903-805-1-git-send-email-antonio@meshcoding.com> <1392122903-805-5-git-send-email-antonio@meshcoding.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <1392122903-805-5-git-send-email-antonio@meshcoding.com> Subject: Re: [B.A.T.M.A.N.] [RFC 04/23] batman-adv: ELP - creating neighbor structures Reply-To: The list for a Better Approach To Mobile Ad-hoc Networking List-Id: The list for a Better Approach To Mobile Ad-hoc Networking List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: The list for a Better Approach To Mobile Ad-hoc Networking Cc: Marek Lindner , Antonio Quartulli On Tue, Feb 11, 2014 at 01:48:04PM +0100, Antonio Quartulli wrote: > From: Linus Luessing > > Initially developed by Linus during a 6 months trainee study > period in Ascom (Switzerland) AG. > > Signed-off-by: Linus Luessing > Signed-off-by: Marek Lindner > Signed-off-by: Antonio Quartulli > --- > bat_v.c | 18 +++++- > bat_v_elp.c | 204 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++- > bat_v_elp.h | 6 ++ > main.h | 2 + > types.h | 53 ++++++++++++++++ > 5 files changed, 281 insertions(+), 2 deletions(-) > > diff --git a/bat_v.c b/bat_v.c > index 7247d7f..bed5e00 100644 > --- a/bat_v.c > +++ b/bat_v.c > @@ -61,5 +61,21 @@ static struct batadv_algo_ops batadv_batman_v __read_mostly = { > > int __init batadv_v_init(void) > { > - return batadv_algo_register(&batadv_batman_v); > + int ret; > + > + /* batman v echo location protocol packet */ > + ret = batadv_recv_handler_register(BATADV_ELP, > + batadv_v_elp_packet_recv); > + if (ret < 0) > + goto elp_unregister; > + > + ret = batadv_algo_register(&batadv_batman_v); > + > + return ret; > + > +elp_unregister: > + if (ret < 0) > + batadv_recv_handler_unregister(BATADV_ELP); No need to check ret here. If we are here, it has to be < 0. It also seems odd to me you are unregistering the handler when the registration of the handler fails! I suspect the first if (ret < 0) should be followed by a plain return ret; and there should be a second test for the return value of batadv_algo_register() which should goto the label and unregister the handler. Andrew