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;