Beispiel #1
0
/*ARGSUSED*/
JNIEXPORT jboolean JNICALL
Java_com_sun_dhcpmgr_bridge_Bridge_isVersionCurrent(
    JNIEnv *env,
    jobject obj)
{
	dsvc_datastore_t datastore;
	int cfgVersion;
	int curVersion;
	int rcode;
	jboolean result = JNI_FALSE;

	/* Get the data store configuration */
	if (dd_get_conf_datastore_t(env, &datastore)) {
		cfgVersion = datastore.d_conver;

		datastore.d_conver = DSVC_CUR_CONVER;
		free(datastore.d_location);
		datastore.d_location = NULL;
		rcode = status_dd(&datastore);
		if (rcode != DSVC_SUCCESS) {
			throw_libdhcpsvc_exception(env, rcode);
		} else {
			curVersion = datastore.d_conver;

			if (curVersion == cfgVersion) {
				result = JNI_TRUE;
			}
		}
		dd_free_datastore_t(&datastore);
	}

	return (result);
}
Beispiel #2
0
/*ARGSUSED*/
JNIEXPORT void JNICALL
Java_com_sun_dhcpmgr_bridge_Bridge_makeLocation(
    JNIEnv *env,
    jobject obj,
    jobject jdatastore)
{
	dsvc_datastore_t datastore;
	int rcode;

	/* Create a dsvc_datastore_t using args and DHCP config file */
	if (!dd_make_datastore_t(env, &datastore, jdatastore)) {
		/* exception thrown */
		return;
	}

	/* If the location does not already exist, go create it. */
	if (status_dd(&datastore) != DSVC_SUCCESS) {
		rcode = mklocation_dd(&datastore);
		if (rcode != DSVC_SUCCESS) {
			throw_libdhcpsvc_exception(env, rcode);
		}
	}

	dd_free_datastore_t(&datastore);
}
Beispiel #3
0
/*
 * Determines if a given data store name is valid.
 */
static boolean_t
dd_is_valid_data_store(JNIEnv *env, const char *name)
{
	char **module;
	int count;
	int ndx;
	int rcode;
	boolean_t isValid = B_FALSE;

	if (name != NULL) {
		rcode = enumerate_dd(&module, &count);
		if (rcode != DSVC_SUCCESS) {
			throw_libdhcpsvc_exception(env, rcode);
		} else {
			for (ndx = 0; !isValid && ndx < count; ndx++) {
				if (strcmp(module[ndx], name) == 0) {
					isValid = B_TRUE;
				}
			}
			free_enumerated_dd(module, count);
		}
	}
	return (isValid);
}