/*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); }
/*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); }
/* * 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); }