⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 support.c

📁 DHCP服务器源码
💻 C
📖 第 1 页 / 共 2 页
字号:
isc_result_t omapi_set_object_value (omapi_object_t *h, omapi_object_t *id,				     const char *name, omapi_object_t *value){	isc_result_t status;	omapi_typed_data_t *tv = (omapi_typed_data_t *)0;	omapi_data_string_t *n = (omapi_data_string_t *)0;	int len;	int ip;	status = omapi_data_string_new (&n, strlen (name), MDL);	if (status != ISC_R_SUCCESS)		return status;	memcpy (n -> value, name, strlen (name));	status = omapi_typed_data_new (MDL, &tv, omapi_datatype_object, value);	if (status != ISC_R_SUCCESS) {		omapi_data_string_dereference (&n, MDL);		return status;	}	status = omapi_set_value (h, id, n, tv);	omapi_data_string_dereference (&n, MDL);	omapi_typed_data_dereference (&tv, MDL);	return status;}isc_result_t omapi_set_string_value (omapi_object_t *h, omapi_object_t *id,				     const char *name, const char *value){	isc_result_t status;	omapi_typed_data_t *tv = (omapi_typed_data_t *)0;	omapi_data_string_t *n = (omapi_data_string_t *)0;	int len;	int ip;	status = omapi_data_string_new (&n, strlen (name), MDL);	if (status != ISC_R_SUCCESS)		return status;	memcpy (n -> value, name, strlen (name));	status = omapi_typed_data_new (MDL, &tv, omapi_datatype_string, value);	if (status != ISC_R_SUCCESS) {		omapi_data_string_dereference (&n, MDL);		return status;	}	status = omapi_set_value (h, id, n, tv);	omapi_data_string_dereference (&n, MDL);	omapi_typed_data_dereference (&tv, MDL);	return status;}isc_result_t omapi_get_value (omapi_object_t *h,			      omapi_object_t *id,			      omapi_data_string_t *name,			      omapi_value_t **value){	omapi_object_t *outer;	for (outer = h; outer -> outer; outer = outer -> outer)		;	if (outer -> type -> get_value)		return (*(outer -> type -> get_value)) (outer,							id, name, value);	return ISC_R_NOTFOUND;}isc_result_t omapi_get_value_str (omapi_object_t *h,				  omapi_object_t *id,				  const char *name,				  omapi_value_t **value){	omapi_object_t *outer;	omapi_data_string_t *nds;	isc_result_t status;	nds = (omapi_data_string_t *)0;	status = omapi_data_string_new (&nds, strlen (name), MDL);	if (status != ISC_R_SUCCESS)		return status;	memcpy (nds -> value, name, strlen (name));	for (outer = h; outer -> outer; outer = outer -> outer)		;	if (outer -> type -> get_value)		status = (*(outer -> type -> get_value)) (outer,							  id, nds, value);	else		status = ISC_R_NOTFOUND;	omapi_data_string_dereference (&nds, MDL);	return status;}isc_result_t omapi_stuff_values (omapi_object_t *c,				 omapi_object_t *id,				 omapi_object_t *o){	omapi_object_t *outer;	for (outer = o; outer -> outer; outer = outer -> outer)		;	if (outer -> type -> stuff_values)		return (*(outer -> type -> stuff_values)) (c, id, outer);	return ISC_R_NOTFOUND;}isc_result_t omapi_object_create (omapi_object_t **obj, omapi_object_t *id,				  omapi_object_type_t *type){	if (!type -> create)		return ISC_R_NOTIMPLEMENTED;	return (*(type -> create)) (obj, id);}isc_result_t omapi_object_update (omapi_object_t *obj, omapi_object_t *id,				  omapi_object_t *src, omapi_handle_t handle){	omapi_generic_object_t *gsrc;	isc_result_t status;	int i;	if (!src)		return ISC_R_INVALIDARG;	if (src -> type != omapi_type_generic)		return ISC_R_NOTIMPLEMENTED;	gsrc = (omapi_generic_object_t *)src;	for (i = 0; i < gsrc -> nvalues; i++) {		status = omapi_set_value (obj, id,					  gsrc -> values [i] -> name,					  gsrc -> values [i] -> value);		if (status != ISC_R_SUCCESS && status != ISC_R_UNCHANGED)			return status;	}	if (handle)		omapi_set_int_value (obj, id, "remote-handle", (int)handle);	status = omapi_signal (obj, "updated");	if (status != ISC_R_NOTFOUND)		return status;	return ISC_R_SUCCESS;}int omapi_data_string_cmp (omapi_data_string_t *s1, omapi_data_string_t *s2){	unsigned len;	int rv;	if (s1 -> len > s2 -> len)		len = s2 -> len;	else		len = s1 -> len;	rv = memcmp (s1 -> value, s2 -> value, len);	if (rv)		return rv;	if (s1 -> len > s2 -> len)		return 1;	else if (s1 -> len < s2 -> len)		return -1;	return 0;}int omapi_ds_strcmp (omapi_data_string_t *s1, const char *s2){	unsigned len, slen;	int rv;	slen = strlen (s2);	if (slen > s1 -> len)		len = s1 -> len;	else		len = slen;	rv = memcmp (s1 -> value, s2, len);	if (rv)		return rv;	if (s1 -> len > slen)		return 1;	else if (s1 -> len < slen)		return -1;	return 0;}int omapi_td_strcmp (omapi_typed_data_t *s1, const char *s2){	unsigned len, slen;	int rv;	/* If the data type is not compatible, never equal. */	if (s1 -> type != omapi_datatype_data &&	    s1 -> type != omapi_datatype_string)		return -1;	slen = strlen (s2);	if (slen > s1 -> u.buffer.len)		len = s1 -> u.buffer.len;	else		len = slen;	rv = memcmp (s1 -> u.buffer.value, s2, len);	if (rv)		return rv;	if (s1 -> u.buffer.len > slen)		return 1;	else if (s1 -> u.buffer.len < slen)		return -1;	return 0;}int omapi_td_strcasecmp (omapi_typed_data_t *s1, const char *s2){	unsigned len, slen;	int rv;	/* If the data type is not compatible, never equal. */	if (s1 -> type != omapi_datatype_data &&	    s1 -> type != omapi_datatype_string)		return -1;	slen = strlen (s2);	if (slen > s1 -> u.buffer.len)		len = s1 -> u.buffer.len;	else		len = slen;	rv = casecmp (s1 -> u.buffer.value, s2, len);	if (rv)		return rv;	if (s1 -> u.buffer.len > slen)		return 1;	else if (s1 -> u.buffer.len < slen)		return -1;	return 0;}isc_result_t omapi_make_value (omapi_value_t **vp,			       omapi_data_string_t *name,			       omapi_typed_data_t *value,			       const char *file, int line){	isc_result_t status;	status = omapi_value_new (vp, file, line);	if (status != ISC_R_SUCCESS)		return status;	status = omapi_data_string_reference (&(*vp) -> name,					      name, file, line);	if (status != ISC_R_SUCCESS) {		omapi_value_dereference (vp, file, line);		return status;	}	if (value) {		status = omapi_typed_data_reference (&(*vp) -> value,						     value, file, line);		if (status != ISC_R_SUCCESS) {			omapi_value_dereference (vp, file, line);			return status;		}	}	return ISC_R_SUCCESS;}isc_result_t omapi_make_const_value (omapi_value_t **vp,				     omapi_data_string_t *name,				     const unsigned char *value,				     unsigned len,				     const char *file, int line){	isc_result_t status;	status = omapi_value_new (vp, file, line);	if (status != ISC_R_SUCCESS)		return status;	status = omapi_data_string_reference (&(*vp) -> name,					      name, file, line);	if (status != ISC_R_SUCCESS) {		omapi_value_dereference (vp, file, line);		return status;	}	if (value) {		status = omapi_typed_data_new (file, line, &(*vp) -> value,					       omapi_datatype_data, len);		if (status != ISC_R_SUCCESS) {			omapi_value_dereference (vp, file, line);			return status;		}		memcpy ((*vp) -> value -> u.buffer.value, value, len);	}	return ISC_R_SUCCESS;}isc_result_t omapi_make_int_value (omapi_value_t **vp,				   omapi_data_string_t *name,				   int value, const char *file, int line){	isc_result_t status;	status = omapi_value_new (vp, file, line);	if (status != ISC_R_SUCCESS)		return status;	status = omapi_data_string_reference (&(*vp) -> name,					      name, file, line);	if (status != ISC_R_SUCCESS) {		omapi_value_dereference (vp, file, line);		return status;	}	status = omapi_typed_data_new (file, line, &(*vp) -> value,				       omapi_datatype_int, value);	if (status != ISC_R_SUCCESS) {		omapi_value_dereference (vp, file, line);		return status;	}	return ISC_R_SUCCESS;}isc_result_t omapi_make_uint_value (omapi_value_t **vp,				    omapi_data_string_t *name,				    unsigned int value,				    const char *file, int line){	return omapi_make_int_value (vp, name, (int)value, file, line);}isc_result_t omapi_make_object_value (omapi_value_t **vp,				      omapi_data_string_t *name,				      omapi_object_t *value,				      const char *file, int line){	isc_result_t status;		status = omapi_value_new (vp, file, line);	if (status != ISC_R_SUCCESS)		return status;		status = omapi_data_string_reference (&(*vp) -> name,                                              name, file, line);	if (status != ISC_R_SUCCESS) {		omapi_value_dereference (vp, file, line);		return status;	}		if (value) {		status = omapi_typed_data_new (file, line, &(*vp) -> value,					       omapi_datatype_object, value);		if (status != ISC_R_SUCCESS) {			omapi_value_dereference (vp, file, line);			return status;		}	}		return ISC_R_SUCCESS;}isc_result_t omapi_make_handle_value (omapi_value_t **vp,				      omapi_data_string_t *name,				      omapi_object_t *value,				      const char *file, int line){	isc_result_t status;	status = omapi_value_new (vp, file, line);	if (status != ISC_R_SUCCESS)		return status;	status = omapi_data_string_reference (&(*vp) -> name,					      name, file, line);	if (status != ISC_R_SUCCESS) {		omapi_value_dereference (vp, file, line);		return status;	}	if (value) {		status = omapi_typed_data_new (file, line, &(*vp) -> value,					       omapi_datatype_int);		if (status != ISC_R_SUCCESS) {			omapi_value_dereference (vp, file, line);			return status;		}		status = (omapi_object_handle			  ((omapi_handle_t *)&(*vp) -> value -> u.integer,			   value));		if (status != ISC_R_SUCCESS) {			omapi_value_dereference (vp, file, line);			return status;		}	}	return ISC_R_SUCCESS;}isc_result_t omapi_make_string_value (omapi_value_t **vp,				      omapi_data_string_t *name,				      const char *value,				      const char *file, int line){	isc_result_t status;	status = omapi_value_new (vp, file, line);	if (status != ISC_R_SUCCESS)		return status;	status = omapi_data_string_reference (&(*vp) -> name,					      name, file, line);	if (status != ISC_R_SUCCESS) {		omapi_value_dereference (vp, file, line);		return status;	}	if (value) {		status = omapi_typed_data_new (file, line, &(*vp) -> value,					       omapi_datatype_string, value);		if (status != ISC_R_SUCCESS) {			omapi_value_dereference (vp, file, line);			return status;		}	}	return ISC_R_SUCCESS;}isc_result_t omapi_get_int_value (unsigned long *v, omapi_typed_data_t *t){	u_int32_t rv;	if (t -> type == omapi_datatype_int) {		*v = t -> u.integer;		return ISC_R_SUCCESS;	} else if (t -> type == omapi_datatype_string ||		   t -> type == omapi_datatype_data) {		if (t -> u.buffer.len != sizeof (rv))			return ISC_R_INVALIDARG;		memcpy (&rv, t -> u.buffer.value, sizeof rv);		*v = ntohl (rv);		return ISC_R_SUCCESS;	}	return ISC_R_INVALIDARG;}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -