2013-10-17 05:18:36 +04:00
/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/
/***
This file is part of systemd .
Copyright 2013 Tom Gundersen < teg @ jklm . no >
systemd is free software ; you can redistribute it and / or modify it
under the terms of the GNU Lesser General Public License as published by
the Free Software Foundation ; either version 2.1 of the License , or
( at your option ) any later version .
systemd is distributed in the hope that it will be useful , but
WITHOUT ANY WARRANTY ; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE . See the GNU
Lesser General Public License for more details .
You should have received a copy of the GNU Lesser General Public License
along with systemd ; If not , see < http : //www.gnu.org/licenses/>.
* * */
# include "sd-event.h"
2013-11-23 05:47:12 +04:00
# include "sd-daemon.h"
2013-10-17 05:18:36 +04:00
# include "networkd.h"
int main ( int argc , char * argv [ ] ) {
2013-11-27 19:28:54 +04:00
_cleanup_manager_free_ Manager * m = NULL ;
2013-10-17 05:18:36 +04:00
int r ;
log_set_target ( LOG_TARGET_AUTO ) ;
log_parse_environment ( ) ;
log_open ( ) ;
umask ( 0022 ) ;
if ( argc ! = 1 ) {
log_error ( " This program takes no arguments. " ) ;
2013-11-23 05:07:08 +04:00
r = - EINVAL ;
goto out ;
2013-10-17 05:18:36 +04:00
}
2014-02-27 04:24:05 +04:00
/* Always create the directories people can create inotify
* watches in . */
mkdir_label ( " /run/systemd/network/links " , 0755 ) ;
mkdir_label ( " /run/systemd/network/leases " , 0755 ) ;
2013-10-17 05:18:36 +04:00
r = manager_new ( & m ) ;
2014-01-16 17:59:26 +04:00
if ( r < 0 ) {
log_error ( " Could not create manager: %s " , strerror ( - r ) ) ;
2013-11-23 05:07:08 +04:00
goto out ;
2014-01-16 17:59:26 +04:00
}
2013-10-17 05:18:36 +04:00
2013-11-25 02:37:56 +04:00
r = manager_load_config ( m ) ;
2014-01-16 17:59:26 +04:00
if ( r < 0 ) {
log_error ( " Could not load configuration files: %s " , strerror ( - r ) ) ;
goto out ;
}
2013-11-25 02:37:56 +04:00
2013-10-17 05:18:36 +04:00
r = manager_udev_listen ( m ) ;
2014-01-16 17:59:26 +04:00
if ( r < 0 ) {
log_error ( " Could not connect to udev: %s " , strerror ( - r ) ) ;
2013-11-23 05:07:08 +04:00
goto out ;
2014-01-16 17:59:26 +04:00
}
2013-10-17 05:18:36 +04:00
r = manager_udev_enumerate_links ( m ) ;
2014-01-16 17:59:26 +04:00
if ( r < 0 ) {
log_error ( " Could not enumerate links: %s " , strerror ( - r ) ) ;
2013-11-23 05:07:08 +04:00
goto out ;
2014-01-16 17:59:26 +04:00
}
2013-10-17 05:18:36 +04:00
2013-11-14 19:22:51 +04:00
r = manager_rtnl_listen ( m ) ;
2014-01-16 17:59:26 +04:00
if ( r < 0 ) {
log_error ( " Could not connect to rtnl: %s " , strerror ( - r ) ) ;
2013-11-23 05:07:08 +04:00
goto out ;
2014-01-16 17:59:26 +04:00
}
2014-01-06 02:01:10 +04:00
2014-01-14 02:48:28 +04:00
r = manager_bus_listen ( m ) ;
if ( r < 0 ) {
log_error ( " Could not connect to system bus: %s " , strerror ( - r ) ) ;
goto out ;
}
2014-01-06 02:01:10 +04:00
/* write out empty resolv.conf to avoid a
* dangling symlink */
r = manager_update_resolv_conf ( m ) ;
2014-01-16 17:59:26 +04:00
if ( r < 0 ) {
log_error ( " Could not create resolv.conf: %s " , strerror ( - r ) ) ;
2014-01-06 02:01:10 +04:00
goto out ;
2014-01-16 17:59:26 +04:00
}
2014-01-06 02:01:10 +04:00
2013-11-23 05:07:08 +04:00
sd_notify ( false ,
" READY=1 \n "
" STATUS=Processing requests... " ) ;
2013-11-14 19:22:51 +04:00
2013-10-17 05:18:36 +04:00
r = sd_event_loop ( m - > event ) ;
2014-01-16 17:59:26 +04:00
if ( r < 0 ) {
log_error ( " Event loop failed: %s " , strerror ( - r ) ) ;
2013-11-23 05:07:08 +04:00
goto out ;
2014-01-16 17:59:26 +04:00
}
2013-11-23 05:07:08 +04:00
out :
sd_notify ( false ,
" STATUS=Shutting down... " ) ;
2013-10-17 05:18:36 +04:00
2013-11-23 05:07:08 +04:00
return r < 0 ? EXIT_FAILURE : EXIT_SUCCESS ;
2013-10-17 05:18:36 +04:00
}