Subject: [PATCH]: garp: retry sending JoinIn messages after allocation failures

From: Patrick McHardy <[email-masked]>
Date: Tue, 15 Jul 2008 15:02:51 +0200

commit ca42e467171a856e008b754b72c3446b70a7c48d
Author: Patrick McHardy <[email-masked]>
Date:   Tue Jul 15 15:00:44 2008 +0200

    garp: retry sending JoinIn messages after allocation failures
    
    Increase reliability by retrying to send JoinIn messages after memory
    allocation failures on each TRANSMIT_PDU event until it succeeds.
    
    Signed-off-by: Patrick McHardy <[email-masked]>

diff --git a/net/802/garp.c b/net/802/garp.c
index 3b78f7b..1dcb066 100644
--- a/net/802/garp.c
+++ b/net/802/garp.c
@@ -323,7 +323,10 @@ static void garp_attr_event(struct garp_applicant *app,
 	case GARP_ACTION_NONE:
 		break;
 	case GARP_ACTION_S_JOIN_IN:
-		garp_pdu_append_attr(app, attr, GARP_JOIN_IN);
+		/* When appending the attribute fails, don't update state in
+		 * order to retry on next TRANSMIT_PDU event. */
+		if (garp_pdu_append_attr(app, attr, GARP_JOIN_IN) < 0)
+			return;
 		break;
 	case GARP_ACTION_S_LEAVE_EMPTY:
 		garp_pdu_append_attr(app, attr, GARP_LEAVE_EMPTY);