X-Git-Url: http://git.linux-vserver.org/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=util-vserver%2Fvserver-start%2Fconfiguration.c;h=3ca19413321657e1126e2bff79a814887a44e694;hb=31110046e99492c1bb9c0a9e12962801ced749b7;hp=435c9ea57693912229d00d4fb92707419cce619a;hpb=e3be43e3ee2157a63ea175463629c2433f595854;p=util-vserver.git diff --git a/util-vserver/vserver-start/configuration.c b/util-vserver/vserver-start/configuration.c index 435c9ea..3ca1941 100644 --- a/util-vserver/vserver-start/configuration.c +++ b/util-vserver/vserver-start/configuration.c @@ -47,10 +47,10 @@ getSingleInterface(struct Interface *res, } static inline bool -getInterfaces(struct Configuration *c, PathInfo const *cfgdir) +getInterfaces(struct Configuration *cfg) { ENSC_PI_DECLARE(iface_subdir, "interfaces"); - PathInfo ifacepath = *cfgdir; + PathInfo ifacepath = cfg->cfgdir; char path_buf[ENSC_PI_APPSZ(ifacepath, iface_subdir)]; struct Interface iface_default; DIR *dir; @@ -78,7 +78,7 @@ getInterfaces(struct Configuration *c, PathInfo const *cfgdir) if (!getSingleInterface(&iface, &iface_default, &ifacepath, ent->d_name)) rc = false; else if (iface.addr.ipv4.ip!=0) { // HACK: non-directory entries would return true also - struct Interface *new_iface = Vector_pushback(&c->interfaces); + struct Interface *new_iface = Vector_pushback(&cfg->interfaces); *new_iface = iface; } } @@ -89,8 +89,23 @@ getInterfaces(struct Configuration *c, PathInfo const *cfgdir) return rc; } +static bool +initVdir(char const **vdir, PathInfo const *cfgdir) +{ + *vdir = vc_getVserverVdir(cfgdir->d, vcCFG_RECENT_FULL, true); + if (*vdir==0) { + WRITE_MSG(2, "Can not find root-directory of the vserver"); + return false; + } + + return true; +} + bool -getConfiguration(struct Configuration *c, PathInfo const *cfgdir) +getConfiguration(struct Configuration *cfg, PathInfo const *cfgdir) { - return getInterfaces(c, cfgdir); + cfg->cfgdir = *cfgdir; + + return (initVdir(&cfg->vdir, cfgdir) && + getInterfaces(cfg)); }