Skip to content

Commit

Permalink
Merge pull request #178 from kmroz/disable-modem-rc
Browse files Browse the repository at this point in the history
temporarily disable modem init from system
  • Loading branch information
olafhering committed Feb 26, 2014
2 parents a4df9ee + 718ee9f commit 4416727
Show file tree
Hide file tree
Showing 8 changed files with 94 additions and 7 deletions.
44 changes: 41 additions & 3 deletions client/main.c
Expand Up @@ -147,7 +147,10 @@ main(int argc, char **argv)
" ifreload [options] <ifname ...>|all\n"
" ifstatus [options] <ifname ...>|all\n"
" show [options] <ifname ...>|all\n"
#ifdef MODEM
" show-xml [--raw] [--modem] <ifname|all>\n"
#endif
" show-xml [--raw] <ifname|all>\n"
" show-config [--raw] [source]\n"
" nanny [subcommand]\n"
" lease [subcommand]\n"
Expand Down Expand Up @@ -513,19 +516,29 @@ __dump_schema_xml(const ni_dbus_variant_t *variant, ni_xs_scope_t *schema)
int
do_show_xml(int argc, char **argv)
{
enum { OPT_HELP, OPT_RAW, OPT_MODEMS, };
enum {
OPT_HELP,
OPT_RAW,
#ifdef MODEM
OPT_MODEMS,
#endif
};
static struct option local_options[] = {
{ "help", no_argument, NULL, OPT_HELP },
{ "raw", no_argument, NULL, OPT_RAW },
#ifdef MODEM
{ "modem", no_argument, NULL, OPT_MODEMS },
#endif
{ NULL }
};
ni_dbus_object_t *list_object, *object;
ni_dbus_variant_t result = NI_DBUS_VARIANT_INIT;
DBusError error = DBUS_ERROR_INIT;
const char *ifname = NULL;
int opt_raw = 0;
#ifdef MODEM
int opt_modems = 0;
#endif
int c, rv = 1;

optind = 1;
Expand All @@ -535,9 +548,11 @@ do_show_xml(int argc, char **argv)
opt_raw = 1;
break;

#ifdef MODEM
case OPT_MODEMS:
opt_modems = 1;
break;
#endif

default:
case OPT_HELP:
Expand All @@ -549,8 +564,10 @@ do_show_xml(int argc, char **argv)
" Show this help text.\n"
" --raw\n"
" Show raw dbus reply in pseudo-xml, rather than using the schema\n"
#ifdef MODEM
" --modem\n"
" List Modems\n"
#endif
);
return 1;
}
Expand All @@ -565,14 +582,17 @@ do_show_xml(int argc, char **argv)

if (!(object = ni_call_create_client()))
return 1;

#ifdef MODEM
if (!opt_modems) {
#endif
if (!(list_object = ni_call_get_netif_list_object()))
goto out;
#ifdef MODEM
} else {
if (!(list_object = ni_call_get_modem_list_object()))
goto out;
}
#endif

if (!ni_dbus_object_call_variant(list_object,
"org.freedesktop.DBus.ObjectManager", "GetManagedObjects",
Expand Down Expand Up @@ -1112,23 +1132,35 @@ do_lease(int argc, char **argv)
int
do_get_names(int argc, char **argv)
{
enum { OPT_HELP, OPT_XML, OPT_MODEMS };
enum {
OPT_HELP,
OPT_XML,
#ifdef MODEM
OPT_MODEMS,
#endif
};
static struct option local_options[] = {
{ "help", no_argument, NULL, OPT_HELP },
{ "xml", no_argument, NULL, OPT_XML },
#ifdef MODEM
{ "modem", no_argument, NULL, OPT_MODEMS },
#endif
{ NULL }
};
ni_dbus_object_t *list_object;
#ifdef MODEM
int opt_modems = 0;
#endif
int c, rv = 1;

optind = 1;
while ((c = getopt_long(argc, argv, "", local_options, NULL)) != EOF) {
switch (c) {
#ifdef MODEM
case OPT_MODEMS:
opt_modems = 1;
break;
#endif

default:
case OPT_HELP:
Expand All @@ -1138,21 +1170,27 @@ do_get_names(int argc, char **argv)
"\nSupported options:\n"
" --help\n"
" Show this help text.\n"
#ifdef MODEM
" --modems\n"
" Query for modem device, rather than network device\n"
#endif
);
return 1;
}
}

ni_objectmodel_init(NULL);
#ifdef MODEM
if (!opt_modems) {
#endif
if (!(list_object = ni_call_get_netif_list_object()))
goto out;
#ifdef MODEM
} else {
if (!(list_object = ni_call_get_modem_list_object()))
goto out;
}
#endif

if (optind < argc) {
DBusError error = DBUS_ERROR_INIT;
Expand Down
14 changes: 14 additions & 0 deletions nanny/main.c
Expand Up @@ -40,7 +40,9 @@ enum {
OPT_SYSTEMD,

OPT_FOREGROUND,
#ifdef MODEM
OPT_NOMODEMMGR,
#endif
};

static struct option options[] = {
Expand All @@ -56,22 +58,28 @@ static struct option options[] = {
/* daemon */
{ "foreground", no_argument, NULL, OPT_FOREGROUND },

#ifdef MODEM
/* specific */
{ "no-modem-manager", no_argument, NULL, OPT_NOMODEMMGR },
#endif

{ NULL }
};

static const char * program_name;
static const char * opt_log_target;
static ni_bool_t opt_foreground;
#ifdef MODEM
static ni_bool_t opt_no_modem_manager;
#endif
static ni_bool_t opt_systemd;

static void babysit(void);
static void ni_nanny_discover_state(ni_nanny_t *);
static void ni_nanny_netif_state_change_signal_receive(ni_dbus_connection_t *, ni_dbus_message_t *, void *);
#ifdef MODEM
static void ni_nanny_modem_state_change_signal_receive(ni_dbus_connection_t *, ni_dbus_message_t *, void *);
#endif
//static void handle_interface_event(ni_netdev_t *, ni_event_t);
//static void handle_modem_event(ni_modem_t *, ni_event_t);
static void handle_rfkill_event(ni_rfkill_type_t, ni_bool_t, void *user_data);
Expand Down Expand Up @@ -151,9 +159,11 @@ main(int argc, char **argv)
opt_foreground = TRUE;
break;

#ifdef MODEM
case OPT_NOMODEMMGR:
opt_no_modem_manager = TRUE;
break;
#endif

case OPT_SYSTEMD:
opt_systemd = TRUE;
Expand Down Expand Up @@ -250,10 +260,12 @@ ni_nanny_discover_state(ni_nanny_t *mgr)
NI_OBJECTMODEL_NETIF_INTERFACE,
ni_nanny_netif_state_change_signal_receive,
mgr);
#ifdef MODEM
ni_dbus_client_add_signal_handler(client, NULL, NULL,
NI_OBJECTMODEL_MODEM_INTERFACE,
ni_nanny_modem_state_change_signal_receive,
mgr);
#endif

ni_fsm_refresh_state(mgr->fsm);

Expand Down Expand Up @@ -354,6 +366,7 @@ ni_nanny_netif_state_change_signal_receive(ni_dbus_connection_t *conn, ni_dbus_m
}
}

#ifdef MODEM
/*
* Wickedd is sending us a modem signal (usually discovery or removal of a modem)
*/
Expand Down Expand Up @@ -397,6 +410,7 @@ ni_nanny_modem_state_change_signal_receive(ni_dbus_connection_t *conn, ni_dbus_m
// ignore
}
}
#endif

void
handle_rfkill_event(ni_rfkill_type_t type, ni_bool_t blocked, void *user_data)
Expand Down
3 changes: 2 additions & 1 deletion nanny/modem.c
Expand Up @@ -32,7 +32,7 @@
#include <wicked/client.h>
#include "nanny.h"


#ifdef MODEM
void
ni_objectmodel_managed_modem_init(ni_dbus_server_t *server)
{
Expand All @@ -44,6 +44,7 @@ ni_objectmodel_managed_modem_init(ni_dbus_server_t *server)
root_object = ni_dbus_server_get_root_object(server);
ni_dbus_object_create(root_object, "Modem", NULL, NULL);
}
#endif

/*
* Create a dbus object representing the managed modem
Expand Down
2 changes: 2 additions & 0 deletions nanny/nanny.c
Expand Up @@ -45,7 +45,9 @@ ni_objectmodel_nanny_init(ni_nanny_t *mgr)

ni_objectmodel_managed_policy_init(mgr->server);
ni_objectmodel_managed_netif_init(mgr->server);
#ifdef MODEM
ni_objectmodel_managed_modem_init(mgr->server);
#endif

ni_objectmodel_register_service(&ni_objectmodel_nanny_service);

Expand Down
2 changes: 2 additions & 0 deletions nanny/nanny.h
Expand Up @@ -158,7 +158,9 @@ extern void ni_objectmodel_unregister_managed_device(ni_managed_device_t *);
extern void interface_manager_register_all(ni_dbus_server_t *);
extern void ni_objectmodel_nanny_init(ni_nanny_t *mgr);
extern void ni_objectmodel_managed_netif_init(ni_dbus_server_t *);
#ifdef MODEM
extern void ni_objectmodel_managed_modem_init(ni_dbus_server_t *);
#endif
extern void ni_objectmodel_managed_policy_init(ni_dbus_server_t *);

#endif /* __WICKED_MANAGER_H__ */
24 changes: 21 additions & 3 deletions server/main.c
Expand Up @@ -40,7 +40,9 @@ enum {

OPT_FOREGROUND,
OPT_RECOVER,
#ifdef MODEM
OPT_NOMODEMMGR,
#endif
};

static struct option options[] = {
Expand All @@ -58,7 +60,10 @@ static struct option options[] = {

/* specific */
{ "recover", no_argument, NULL, OPT_RECOVER },
#ifdef MODEM
{ "no-modem-manager", no_argument, NULL, OPT_NOMODEMMGR },
#endif


{ NULL }
};
Expand All @@ -68,7 +73,9 @@ static const char * opt_log_target;
static ni_bool_t opt_foreground;
static ni_bool_t opt_recover_state;
/* FIXME: ModemManager changed to ModemManager1 - new API -> disabled */
#ifdef MODEM
static ni_bool_t opt_no_modem_manager = TRUE;
#endif
static ni_bool_t opt_systemd;
static char * opt_state_file;
static ni_dbus_server_t *dbus_server;
Expand All @@ -79,7 +86,9 @@ static void recover_state(const char *filename);
static void handle_interface_event(ni_netdev_t *, ni_event_t);
static void handle_rfkill_event(ni_rfkill_type_t, ni_bool_t, void *);
static void handle_other_event(ni_event_t);
#ifdef MODEM
static void handle_modem_event(ni_modem_t *, ni_event_t);
#endif

int
main(int argc, char **argv)
Expand Down Expand Up @@ -112,8 +121,10 @@ main(int argc, char **argv)
" Tell the daemon to not background itself at startup.\n"
" --recover\n"
" Restart of address configuration daemons and keep state information.\n"
#ifdef MODEM
" --no-modem-manager\n"
" Skip start of modem-manager.\n"
#endif
" --systemd\n"
" Enables behavior required by systemd service\n"
, program_name);
Expand Down Expand Up @@ -160,10 +171,11 @@ main(int argc, char **argv)
case OPT_RECOVER:
opt_recover_state = TRUE;
break;

#ifdef MODEM
case OPT_NOMODEMMGR:
opt_no_modem_manager = TRUE;
break;
#endif

case OPT_SYSTEMD:
opt_systemd = TRUE;
Expand Down Expand Up @@ -213,11 +225,12 @@ run_interface_server(void)
dbus_server = ni_objectmodel_create_service();
if (!dbus_server)
ni_fatal("Cannot create server, giving up.");

#ifdef MODEM
if (!opt_no_modem_manager) {
if (!ni_modem_manager_init(handle_modem_event))
ni_error("unable to initialize modem manager client");
}
#endif

schema = ni_objectmodel_init(dbus_server);
if (schema == NULL)
Expand Down Expand Up @@ -269,7 +282,9 @@ discover_state(ni_dbus_server_t *server)
{
ni_netconfig_t *nc;
ni_netdev_t *ifp;
#ifdef MODEM
ni_modem_t *modem;
#endif

nc = ni_global_state_handle(1);
if (nc == NULL)
Expand All @@ -280,9 +295,10 @@ discover_state(ni_dbus_server_t *server)
ni_objectmodel_register_netif(server, ifp, NULL);
ni_netdev_load_client_state(ifp);
}

#ifdef MODEM
for (modem = ni_netconfig_modem_list(nc); modem; modem = modem->list.next)
ni_objectmodel_register_modem(server, modem);
#endif
}
}

Expand Down Expand Up @@ -387,6 +403,7 @@ handle_other_event(ni_event_t event)
/*
* Modem event - device was plugged
*/
#ifdef MODEM
static void
handle_modem_event(ni_modem_t *modem, ni_event_t event)
{
Expand Down Expand Up @@ -441,6 +458,7 @@ handle_modem_event(ni_modem_t *modem, ni_event_t event)
}
}
}
#endif

void
handle_rfkill_event(ni_rfkill_type_t type, ni_bool_t blocked, void *user_data)
Expand Down

0 comments on commit 4416727

Please sign in to comment.