gprs_ns2: unify the handling of **result when bind already present.

All bind function should work in the same way.
Also fixing a null pointer assignment if no **result is giving.

Change-Id: Idd0c2190d2af39804c18c4786a997079db9a4330
diff --git a/src/gb/gprs_ns2_fr.c b/src/gb/gprs_ns2_fr.c
index fc6a5c4..f1a5576 100644
--- a/src/gb/gprs_ns2_fr.c
+++ b/src/gb/gprs_ns2_fr.c
@@ -721,8 +721,8 @@
  *  \param[in] netif Network interface to bind to
  *  \param[in] fr_network
  *  \param[in] fr_role
- *  \param[out] result pointer to created bind
- *  \return 0 on success; negative on error */
+ *  \param[out] result pointer to the created bind or if a bind with the name exists return the bind.
+ *  \return 0 on success; negative on error. -EALREADY returned in case a bind with the name exists */
 int gprs_ns2_fr_bind(struct gprs_ns2_inst *nsi,
 		     const char *name,
 		     const char *netif,
@@ -738,8 +738,12 @@
 	if (strlen(netif) > IFNAMSIZ)
 		return -EINVAL;
 
-	if (gprs_ns2_bind_by_name(nsi, name))
+	bind = gprs_ns2_bind_by_name(nsi, name);
+	if (bind) {
+		if (result)
+			*result = bind;
 		return -EALREADY;
+	}
 
 	rc = ns2_bind_alloc(nsi, name, &bind);
 	if (rc < 0)