summaryrefslogtreecommitdiff
path: root/local/mib2c-conf.d/syntax-InetAddress-get.m2i
diff options
context:
space:
mode:
Diffstat (limited to 'local/mib2c-conf.d/syntax-InetAddress-get.m2i')
-rw-r--r--local/mib2c-conf.d/syntax-InetAddress-get.m2i100
1 files changed, 100 insertions, 0 deletions
diff --git a/local/mib2c-conf.d/syntax-InetAddress-get.m2i b/local/mib2c-conf.d/syntax-InetAddress-get.m2i
new file mode 100644
index 0000000..253980c
--- /dev/null
+++ b/local/mib2c-conf.d/syntax-InetAddress-get.m2i
@@ -0,0 +1,100 @@
+############################################################# -*- c -*-
+## generic include for XXX. Do not use directly.
+##
+## $Id$
+########################################################################
+@if $m2c_mark_boundary == 1@
+/** START code generated by $RCSfile$ $Revision$ */
+@end@
+########################################################################
+##
+ /*
+ * TODO:231:M: |-> copy $node data.
+ * TODO:231:M: | |-> get address type from your context pointer.
+ */
+ int addressType = -1;
+ size_t actual_size = 0;
+
+ return MFD_SKIP; /* TODO:235:M: |-> Remove SKIP once you've set $node data */
+
+ switch (addressType) {
+ case INETADDRESSTYPE_UNKNOWN:
+ /*
+ * An unknown address type. This value MUST be used if the value
+ * of the InetAddress object is a zero-length string. It may also be
+ * used to indicate an IP address which is not in one of the formats
+ * defined below.
+ */
+ actual_size = ${m2c_ctx_rhs};
+ break;
+
+ case INETADDRESSTYPE_IPV4:
+ /*
+ * Represents an IPv4 network address:
+ * octets contents encoding
+ * 1-4 IPv4 address network-byte order
+ */
+ actual_size = 4;
+ break;
+
+ case INETADDRESSTYPE_IPV6:
+ /*
+ * Represents an IPv6 network address:
+ *
+ * octets contents encoding
+ * 1-16 IPv6 address network-byte order
+ */
+ actual_size = 16;
+ break;
+
+ case INETADDRESSTYPE_IPV4Z:
+ /*
+ * Represents a non-global IPv4 network address together
+ * with its zone index:
+ *
+ * octets contents encoding
+ * 1-4 IPv4 address network-byte order
+ * 5-8 zone index network-byte order
+ */
+ actual_size = 8;
+ break;
+
+ case INETADDRESSTYPE_IPV6Z:
+ /*
+ * Represents a non-global IPv6 network address together
+ * with its zone index:
+ *
+ * octets contents encoding
+ * 1-16 IPv6 address network-byte order
+ * 17-20 zone index network-byte order
+ */
+ actual_size = 20;
+ break;
+
+ case INETADDRESSTYPE_DNS:
+ /*
+ * Represents a DNS domain name. The name SHOULD be fully
+ * qualified whenever possible.
+ */
+ actual_size = ${m2c_ctx_rhs};
+ break;
+
+ default:
+ snmp_log(LOG_ERR, "unknown InetAddressType %d for $node\n",
+ addressType);
+ return SNMP_ERR_GENERR;
+ }
+
+ if ( actual_size > ${m2c_ctx_lhs} ) {
+ snmp_log(LOG_ERR, "actual size %d too big for $node\n",
+ addressType);
+ return SNMP_ERR_GENERR;
+ }
+
+ memcpy( ${m2c_ctx_lh}, ${m2c_ctx_rh}, actual_size);
+ ${m2c_ctx_lhs} = actual_size;
+##
+########################################################################
+@if $m2c_mark_boundary == 1@
+/** END code generated by $RCSfile$ $Revision$ */
+@end@