mirror of
https://gitlab.freedesktop.org/NetworkManager/NetworkManager.git
synced 2025-12-28 01:40:16 +01:00
rdisc: cleanup handling of NMRDisc->lladdr field
Release the previous instance when setting the lladdr property and unref it in the desctructor. Signed-off-by: Thomas Haller <thaller@redhat.com>
This commit is contained in:
parent
465458a206
commit
ccc912e870
2 changed files with 12 additions and 3 deletions
|
|
@ -426,13 +426,16 @@ receive_ra (struct ndp *ndp, struct ndp_msg *msg, gpointer user_data)
|
|||
NMRDisc *rdisc = (NMRDisc *) user_data;
|
||||
NMLNDPRDiscPrivate *priv = NM_LNDP_RDISC_GET_PRIVATE (rdisc);
|
||||
NMRDiscConfigMap changed = 0;
|
||||
size_t lladdrlen;
|
||||
const char *lladdr = g_bytes_get_data (rdisc->lladdr, &lladdrlen);
|
||||
size_t lladdrlen = 0;
|
||||
const char *lladdr = NULL;
|
||||
struct ndp_msgra *msgra = ndp_msgra (msg);
|
||||
NMRDiscGateway gateway;
|
||||
guint32 now = get_time ();
|
||||
int offset;
|
||||
|
||||
if (rdisc->lladdr)
|
||||
lladdr = g_bytes_get_data (rdisc->lladdr, &lladdrlen);
|
||||
|
||||
/* Router discovery is subject to the following RFC documents:
|
||||
*
|
||||
* http://tools.ietf.org/html/rfc4861
|
||||
|
|
|
|||
|
|
@ -41,7 +41,9 @@ static guint signals[LAST_SIGNAL] = { 0 };
|
|||
void
|
||||
nm_rdisc_set_lladdr (NMRDisc *rdisc, const char *addr, size_t addrlen)
|
||||
{
|
||||
rdisc->lladdr = g_bytes_new (addr, addrlen);
|
||||
if (rdisc->lladdr)
|
||||
g_bytes_unref (rdisc->lladdr);
|
||||
rdisc->lladdr = addr ? g_bytes_new (addr, addrlen) : NULL;
|
||||
}
|
||||
|
||||
void
|
||||
|
|
@ -145,6 +147,7 @@ nm_rdisc_init (NMRDisc *rdisc)
|
|||
rdisc->routes = g_array_new (FALSE, FALSE, sizeof (NMRDiscRoute));
|
||||
rdisc->dns_servers = g_array_new (FALSE, FALSE, sizeof (NMRDiscDNSServer));
|
||||
rdisc->dns_domains = g_array_new (FALSE, FALSE, sizeof (NMRDiscDNSDomain));
|
||||
rdisc->lladdr = NULL;
|
||||
}
|
||||
|
||||
static void
|
||||
|
|
@ -158,6 +161,9 @@ nm_rdisc_finalize (GObject *object)
|
|||
g_array_unref (rdisc->routes);
|
||||
g_array_unref (rdisc->dns_servers);
|
||||
g_array_unref (rdisc->dns_domains);
|
||||
|
||||
if (rdisc->lladdr)
|
||||
g_bytes_unref (rdisc->lladdr);
|
||||
}
|
||||
|
||||
static void
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue