Print this page
14019 Allow more control over zone init exit actions
Portions contributed by: Joshua M. Clulow <jmc@joyent.com>
Portions contributed by: Andy Fiddaman <andy@omnios.org>
Reviewed by: C Fraire <cfraire@me.com>
Reviewed by: Gordon Ross <Gordon.W.Ross@gmail.com>
Approved by: Robert Mustacchi <rm@fingolfin.org>
*** 61,70 ****
--- 61,72 ----
#define DTD_ELEM_LOGIN_CMD ((const xmlChar *) "login_cmd")
#define DTD_ELEM_FORCELOGIN_CMD ((const xmlChar *) "forcedlogin_cmd")
#define DTD_ELEM_MODNAME ((const xmlChar *) "modname")
#define DTD_ELEM_MOUNT ((const xmlChar *) "mount")
#define DTD_ELEM_RESTARTINIT ((const xmlChar *) "restartinit")
+ #define DTD_ELEM_RESTARTINIT0 ((const xmlChar *) "restartinit0")
+ #define DTD_ELEM_RESTARTINITREBOOT ((const xmlChar *) "restartinitreboot")
#define DTD_ELEM_POSTATTACH ((const xmlChar *) "postattach")
#define DTD_ELEM_POSTCLONE ((const xmlChar *) "postclone")
#define DTD_ELEM_POSTINSTALL ((const xmlChar *) "postinstall")
#define DTD_ELEM_POSTSNAP ((const xmlChar *) "postsnap")
#define DTD_ELEM_POSTSTATECHG ((const xmlChar *) "poststatechange")
*** 528,552 ****
struct brand_handle *bhp = (struct brand_handle *)bh;
return (brand_get_value(bhp, NULL, NULL, NULL, NULL,
buf, len, DTD_ELEM_INITNAME, B_FALSE, B_FALSE));
}
! boolean_t
! brand_restartinit(brand_handle_t bh)
{
struct brand_handle *bhp = (struct brand_handle *)bh;
char val[80];
if (brand_get_value(bhp, NULL, NULL, NULL, NULL,
! val, sizeof (val), DTD_ELEM_RESTARTINIT, B_FALSE, B_FALSE) != 0)
! return (B_TRUE);
if (strcmp(val, "false") == 0)
return (B_FALSE);
return (B_TRUE);
}
int
brand_get_login_cmd(brand_handle_t bh, const char *username,
char *buf, size_t len)
{
struct brand_handle *bhp = (struct brand_handle *)bh;
--- 530,573 ----
struct brand_handle *bhp = (struct brand_handle *)bh;
return (brand_get_value(bhp, NULL, NULL, NULL, NULL,
buf, len, DTD_ELEM_INITNAME, B_FALSE, B_FALSE));
}
! static boolean_t
! i_brand_restartinit(brand_handle_t bh, const xmlChar *tagname, boolean_t deflt)
{
struct brand_handle *bhp = (struct brand_handle *)bh;
char val[80];
if (brand_get_value(bhp, NULL, NULL, NULL, NULL,
! val, sizeof (val), tagname, B_FALSE, B_FALSE) != 0) {
! return (deflt);
! }
if (strcmp(val, "false") == 0)
return (B_FALSE);
return (B_TRUE);
}
+ boolean_t
+ brand_restartinit(brand_handle_t bh)
+ {
+ return (i_brand_restartinit(bh, DTD_ELEM_RESTARTINIT, B_TRUE));
+ }
+
+ boolean_t
+ brand_restartinit0(brand_handle_t bh)
+ {
+ return (i_brand_restartinit(bh, DTD_ELEM_RESTARTINIT0, B_FALSE));
+ }
+
+ boolean_t
+ brand_restartinitreboot(brand_handle_t bh)
+ {
+ return (i_brand_restartinit(bh, DTD_ELEM_RESTARTINITREBOOT, B_FALSE));
+ }
+
int
brand_get_login_cmd(brand_handle_t bh, const char *username,
char *buf, size_t len)
{
struct brand_handle *bhp = (struct brand_handle *)bh;