summaryrefslogtreecommitdiff
path: root/cleopatre/application
diff options
context:
space:
mode:
Diffstat (limited to 'cleopatre/application')
-rw-r--r--cleopatre/application/managerd/src/mme_nl.c38
1 files changed, 17 insertions, 21 deletions
diff --git a/cleopatre/application/managerd/src/mme_nl.c b/cleopatre/application/managerd/src/mme_nl.c
index f089c18d62..6b7cc7b6f8 100644
--- a/cleopatre/application/managerd/src/mme_nl.c
+++ b/cleopatre/application/managerd/src/mme_nl.c
@@ -157,29 +157,11 @@ int mme_nl_init(struct managerd_ctx *ctx)
//Check arguments
assert(ctx != NULL);
- /* open netlink socket */
- if(0 > (ctx->sock_mme = socket(PF_NETLINK, SOCK_RAW, NETLINK_PLC_MME)))
- {
- syslog (LOG_WARNING, "cannot open socket on %s (%s)", MME_IFNAME, strerror(errno));
- return -1;
- }
- memset(&ctx->mme_snl, 0, sizeof(ctx->mme_snl));
- ctx->mme_snl.nl_family = AF_NETLINK;
- ctx->mme_snl.nl_pid = getpid(); /* self pid */
- ctx->mme_snl.nl_groups = 0; /* not in mcast group */
- if (0 > bind(ctx->sock_mme, (struct sockaddr *)&ctx->mme_snl, sizeof(ctx->mme_snl)))
- {
- syslog (LOG_WARNING, "cannot bind socket on %s (%s)", MME_IFNAME, strerror (errno));
- close (ctx->sock_mme);
- return -1;
- }
-
/* Create a receive connection on PLC interface */
if (0 > (sock_plc = socket (AF_PACKET, SOCK_RAW, ETH_P_HPAV)))
{
syslog (LOG_WARNING, "cannot open socket on %s (%s)", PLC_IFNAME,
strerror (errno));
- close (ctx->sock_mme);
return -1;
}
@@ -189,7 +171,6 @@ int mme_nl_init(struct managerd_ctx *ctx)
{
syslog (LOG_WARNING, "cannot get interface %s index (%s)",
PLC_IFNAME, strerror (errno));
- close (ctx->sock_mme);
close (sock_plc);
return -1;
}
@@ -203,7 +184,6 @@ int mme_nl_init(struct managerd_ctx *ctx)
{
syslog (LOG_WARNING, "cannot bind raw socket to interface %s (%s)",
PLC_IFNAME, strerror (errno));
- close (ctx->sock_mme);
close (sock_plc);
return -1;
}
@@ -216,7 +196,6 @@ int mme_nl_init(struct managerd_ctx *ctx)
if (0 > (ioctl (sock_plc, PLCDRV_IOCTL_SETPID, &ifr)))
{
syslog (LOG_WARNING, "cannot call ioctl SETPID (%s)", strerror (errno));
- close (ctx->sock_mme);
close (sock_plc);
return -1;
}
@@ -224,6 +203,23 @@ int mme_nl_init(struct managerd_ctx *ctx)
/* We do not need PLC connection anymore => close it. */
close (sock_plc);
+ /* open netlink socket */
+ if (0 > (ctx->sock_mme = socket (PF_NETLINK, SOCK_RAW, NETLINK_PLC_MME)))
+ {
+ syslog (LOG_WARNING, "cannot open socket on %s (%s)", MME_IFNAME, strerror(errno));
+ return -1;
+ }
+ memset (&ctx->mme_snl, 0, sizeof (ctx->mme_snl));
+ ctx->mme_snl.nl_family = AF_NETLINK;
+ ctx->mme_snl.nl_pid = getpid (); /* self pid */
+ ctx->mme_snl.nl_groups = 0; /* not in mcast group */
+ if (0 > bind (ctx->sock_mme, (struct sockaddr *) &ctx->mme_snl, sizeof (ctx->mme_snl)))
+ {
+ syslog (LOG_WARNING, "cannot bind socket on %s (%s)", MME_IFNAME, strerror (errno));
+ close (ctx->sock_mme);
+ return -1;
+ }
+
return 0;
}