/*
* CDDL HEADER START
*
* The contents of this file are subject to the terms of the
* Common Development and Distribution License (the "License").
* You may not use this file except in compliance with the License.
*
* You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
* or http://www.opensolaris.org/os/licensing.
* See the License for the specific language governing permissions
* and limitations under the License.
*
* When distributing Covered Code, include this CDDL HEADER in each
* file and include the License file at usr/src/OPENSOLARIS.LICENSE.
* If applicable, add the following below this CDDL HEADER, with the
* fields enclosed by brackets "[]" replaced with your own identifying
* information: Portions Copyright [yyyy] [name of copyright owner]
*
* CDDL HEADER END
*/
/*
* Copyright 2009 Sun Microsystems, Inc. All rights reserved.
* Use is subject to license terms.
*/
#ifndef SCRIPT_HANDLER_H
#define SCRIPT_HANDLER_H
#include "common.h"
#ifdef __cplusplus
extern "C" {
#endif
/*
* The signal SIGTERM is sent to a script process if it does not exit after
* SCRIPT_TIMEOUT seconds; and the signal SIGKILL is sent if it is still alive
* SCRIPT_TIMEOUT_GRACE seconds after SIGTERM is sent. (SCRIPT_TIMEOUT +
* SCRIPT_TIMEOUT_GRACE) should be less than DHCP_ASYNC_WAIT.
*/
#define SCRIPT_TIMEOUT 55
#define SCRIPT_TIMEOUT_GRACE 3
/*
* script exit status as dhcpagent sees it, for debug purpose only.
*
* SCRIPT_OK: script exits ok, no timeout
* SCRIPT_KILLED: script timeout, killed
* SCRIPT_FAILED: unknown status
*/
enum { SCRIPT_OK, SCRIPT_KILLED, SCRIPT_FAILED };
/*
* event names for script.
*/
#define EVENT_BOUND "BOUND"
#define EVENT_EXTEND "EXTEND"
#define EVENT_EXPIRE "EXPIRE"
#define EVENT_DROP "DROP"
#define EVENT_INFORM "INFORM"
#define EVENT_RELEASE "RELEASE"
#define EVENT_BOUND6 "BOUND6"
#define EVENT_EXTEND6 "EXTEND6"
#define EVENT_EXPIRE6 "EXPIRE6"
#define EVENT_DROP6 "DROP6"
#define EVENT_INFORM6 "INFORM6"
#define EVENT_LOSS6 "LOSS6"
#define EVENT_RELEASE6 "RELEASE6"
/*
* script location.
*/
#define SCRIPT_PATH "/etc/dhcp/eventhook"
/*
* the number of running scripts.
*/
extern unsigned int script_count;
void script_init(dhcp_smach_t *);
boolean_t script_start(dhcp_smach_t *, const char *, script_callback_t *,
void *, int *);
void script_stop(dhcp_smach_t *);
#ifdef __cplusplus
}
#endif
#endif /* SCRIPT_HANDLER_H */