Skip to content

Commit

Permalink
Merge pull request #176 from pwieczorkiewicz/nanny-client-info
Browse files Browse the repository at this point in the history
  • Loading branch information
mtomaschewski committed Feb 25, 2014
2 parents ea0ff74 + fd5ee43 commit d673e74
Show file tree
Hide file tree
Showing 5 changed files with 26 additions and 6 deletions.
8 changes: 7 additions & 1 deletion nanny/device.c
Original file line number Diff line number Diff line change
Expand Up @@ -29,6 +29,7 @@
#include <wicked/dbus-errors.h>
#include <wicked/fsm.h>
#include <wicked/client.h>
#include "util_priv.h"
#include "nanny.h"


Expand Down Expand Up @@ -73,7 +74,7 @@ ni_managed_device_new(ni_nanny_t *mgr, ni_ifworker_t *w, ni_managed_device_t **l
{
ni_managed_device_t *mdev;

mdev = calloc(1, sizeof(*mdev));
mdev = xcalloc(1, sizeof(*mdev));
mdev->nanny = mgr;
mdev->worker = ni_ifworker_get(w);

Expand Down Expand Up @@ -134,6 +135,7 @@ void
ni_managed_device_apply_policy(ni_managed_device_t *mdev, ni_managed_policy_t *mpolicy)
{
ni_ifworker_t *w = mdev->worker;
ni_fsm_t *fsm = mdev->nanny->fsm;
const char *type_name;
const ni_fsm_policy_t *policy = mpolicy->fsm_policy;
xml_node_t *config = NULL;
Expand Down Expand Up @@ -166,6 +168,10 @@ ni_managed_device_apply_policy(ni_managed_device_t *mdev, ni_managed_policy_t *m

ni_debug_nanny("%s: using policy %s", w->name, ni_fsm_policy_name(policy));

/* Set FSM and current ifworker as writable, nanny can update wickedd structures */
w->readonly = FALSE;
fsm->readonly = FALSE;

/* This returns "modem" or "interface" */
type_name = ni_ifworker_type_to_string(w->type);

Expand Down
14 changes: 13 additions & 1 deletion nanny/main.c
Original file line number Diff line number Diff line change
Expand Up @@ -27,6 +27,7 @@
#include <wicked/modem.h>
#include <wicked/wireless.h>
#include <wicked/fsm.h>
#include "util_priv.h"
#include "nanny.h"

enum {
Expand Down Expand Up @@ -189,13 +190,20 @@ void
babysit(void)
{
ni_nanny_t *mgr;
ni_fsm_t *fsm;

mgr = ni_nanny_new();

if (ni_init_ex("nanny", ni_nanny_config_callback, mgr) < 0)
ni_fatal("error in configuration file");

ni_nanny_start(mgr);
fsm = mgr->fsm;

/* Nanny should not update neither <client-info> nor <client-state>,
* unless it is told to configure a device by 'wicked enable'.
*/
fsm->readonly = TRUE;

if (!opt_foreground) {
if (ni_server_background(program_name) < 0)
Expand All @@ -213,6 +221,10 @@ babysit(void)
ni_nanny_down_do(mgr);

ni_fsm_do(mgr->fsm, &timeout);

/* Set back the FSM to readonly after job is done */
fsm->readonly = TRUE;

if (ni_socket_wait(timeout) != 0)
ni_fatal("ni_socket_wait failed");
}
Expand Down Expand Up @@ -431,7 +443,7 @@ ni_nanny_config_callback(void *appdata, const xml_node_t *node)
goto skip_option;
}

match = calloc(1, sizeof(*match));
match = xcalloc(1, sizeof(*match));
match->type = type;
ni_string_dup(&match->value, attrval);

Expand Down
5 changes: 3 additions & 2 deletions nanny/nanny.c
Original file line number Diff line number Diff line change
Expand Up @@ -28,6 +28,7 @@
#include <wicked/dbus-service.h>
#include <wicked/dbus-errors.h>
#include <wicked/fsm.h>
#include "util_priv.h"
#include "nanny.h"


Expand Down Expand Up @@ -71,7 +72,7 @@ ni_nanny_new(void)
{
ni_nanny_t *mgr;

mgr = calloc(1, sizeof(*mgr));
mgr = xcalloc(1, sizeof(*mgr));
return mgr;
}

Expand Down Expand Up @@ -509,7 +510,7 @@ ni_nanny_user_new(uid_t uid)
{
ni_nanny_user_t *user;

user = calloc(1, sizeof(*user));
user = xcalloc(1, sizeof(*user));
user->uid = uid;
user->secret_db = ni_secret_db_new();
return user;
Expand Down
3 changes: 2 additions & 1 deletion nanny/policy.c
Original file line number Diff line number Diff line change
Expand Up @@ -28,6 +28,7 @@
#include <wicked/dbus-service.h>
#include <wicked/dbus-errors.h>
#include <wicked/fsm.h>
#include "util_priv.h"
#include "nanny.h"


Expand All @@ -51,7 +52,7 @@ ni_managed_policy_new(ni_nanny_t *mgr, ni_fsm_policy_t *policy, xml_document_t *
{
ni_managed_policy_t *mpolicy;

mpolicy = calloc(1, sizeof(*mpolicy));
mpolicy = xcalloc(1, sizeof(*mpolicy));
mpolicy->fsm_policy = policy;
mpolicy->doc = doc;

Expand Down
2 changes: 1 addition & 1 deletion src/fsm.c
Original file line number Diff line number Diff line change
Expand Up @@ -2383,6 +2383,7 @@ ni_fsm_recv_new_netif(ni_fsm_t *fsm, ni_dbus_object_t *object, ni_bool_t refresh
if (!found) {
ni_debug_application("received new device %s (%s)", dev->name, object->path);
found = ni_ifworker_new(fsm, NI_IFWORKER_TYPE_NETDEV, dev->name);
found->readonly = fsm->readonly;
if (dev->client_info)
ni_ifworker_refresh_client_info(found, dev->client_info);
if (dev->client_state)
Expand All @@ -2395,7 +2396,6 @@ ni_fsm_recv_new_netif(ni_fsm_t *fsm, ni_dbus_object_t *object, ni_bool_t refresh
found->device = ni_netdev_get(dev);
found->ifindex = dev->link.ifindex;
found->object = object;
found->readonly = fsm->readonly;

/* Don't touch devices we're done with */

Expand Down

0 comments on commit d673e74

Please sign in to comment.