Index: /branches/rel_apv_10_7/usr/click/bin/backend/Makefile
===================================================================
--- /branches/rel_apv_10_7/usr/click/bin/backend/Makefile	(revision 39033)
+++ /branches/rel_apv_10_7/usr/click/bin/backend/Makefile	(working copy)
@@ -1,7 +1,7 @@
 # ArrayOS
 NO_MAN=
 PROG=	backend
-SRCS=	sys_cmd.c backend.c segment_nat_auto.c ntp.c sys_tool.c users.c engineering.c \
+SRCS=	sys_cmd.c backend.c segment_nat_auto.c ntp.c geneve.c sys_tool.c users.c engineering.c \
 	engineering_commands.c sys_time.c sync_ui.c role.c \
 	utils.c sys_dump.c
 
Index: /branches/rel_apv_10_7/usr/click/bin/backend/geneve.c
===================================================================
--- /branches/rel_apv_10_7/usr/click/bin/backend/geneve.c	(revision 0)
+++ /branches/rel_apv_10_7/usr/click/bin/backend/geneve.c	(working copy)
@@ -0,0 +1,143 @@
+
+/*-----------------------------------------------------------------------
+*
+* Copyright (C) 2024
+* ArrayNetworks Inc. All rights reserved.
+*
+* Redistribution and use in source and binary forms, with or without
+* modification is not permitted unless authorized in writing by a duly
+* appointed officer of ClickArray Inc. or its derivatives
+*
+* UI Geneve
+*
+* $ArrayOS$
+*
+*-----------------------------------------------------------------------
+*/
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <unistd.h>
+#include <errno.h>
+#include <netdb.h>
+
+#if __BSD_VISIBLE
+typedef	unsigned char	u_char;
+typedef	unsigned short	u_short;
+typedef	unsigned int	u_int;
+typedef	unsigned long	u_long;
+#ifndef _KERNEL
+typedef	unsigned short	ushort;		/* Sys V compatibility */
+typedef	unsigned int	uint;		/* Sys V compatibility */
+#endif
+#endif
+
+// set
+int set_geneve(char* geneve_name, u_int vni) {
+    printf("Set GENEVE: %s, VI number: %d\n", geneve_name, vni);
+    return 0;
+}
+
+int geneve_tunnel(char* tun_name, char* localip, char* dstip) {
+    printf("GENEVE tunnel: %s, localip: %s, dstip: %s\n", tun_name, localip, dstip);
+    return 0;
+}
+
+int geneve_bind(char* geneve_name, char* tun_name) {
+    printf("GENEVE : %s, tunnel name: %s\n", geneve_name, tun_name);
+    return 0;
+}
+
+int geneve_associate(char* geneve_name, char* port_name) {
+    printf("GENEVE : %s, port name: %s\n", geneve_name, port_name);
+    return 0;
+}
+
+// no
+int no_geneve(char* geneve_name) {
+	printf("no GENEVE : %s\n", geneve_name);
+    return 0;
+}
+
+int no_geneve_tunnel(char* tun_name) {
+    printf("no GENEVE tunnel : %s\n", tun_name);
+    return 0;
+}
+
+int no_geneve_bind(char* geneve_name, char* tun_name) {
+    printf("GENEVE : %s, tunnel name: %s\n", geneve_name, tun_name);
+    return 0;
+}
+
+int no_geneve_associate(char* geneve_name, char* port_name) {
+    printf("GENEVE : %s, port name: %s\n", geneve_name, port_name);
+    return 0;
+}
+
+// show
+int show_geneve_interface(void) {
+    printf("Show GENEVE interface\n");
+    return 0;
+}
+
+int show_geneve_port(void) {
+    printf("Show GENEVE port\n");
+    return 0;
+}
+
+int show_geneve_learn(void) {
+    printf("Show GENEVE learn\n");
+    return 0;
+}
+
+int show_geneve_bind(char* geneve_name) {
+    printf("Show GENEVE bind\n");
+    return 0;
+}
+
+int show_geneve_associate(char* geneve_name) {
+    printf("Show GENEVE associate\n");
+    return 0;
+}
+
+int show_geneve_tunnel(char *tun_name) {
+    printf("Show GENEVE tunnel\n");
+    return 0;
+}
+
+int show_geneve_forwarding(uint32_t vni, char* mac) {
+    printf("Show GENEVE forward vni: %d, mac: %s\n", vni, mac);
+    return 0;
+}
+
+int show_geneve_all(void) {
+    printf("Show GENEVE all\n");
+    return 0;
+}
+
+// // clear
+int clear_geneve_bind(char * geneve_name) {
+    printf("Clear GENEVE bind %s\n", geneve_name);
+    return 0;
+}
+
+int clear_geneve_associate(void) {
+    printf("Clear GENEVE associate\n");
+    return 0;
+}
+
+int clear_geneve_tunnel(void) {
+    printf("Clear GENEVE tunnel\n");
+    return 0;
+}
+
+int clear_geneve_interface(void) {
+    printf("Clear GENEVE interface\n");
+    return 0;
+}
+
+int clear_geneve_all(void) {
+    printf("Clear GENEVE all\n");
+    return 0;
+}
\ No newline at end of file
Index: /branches/rel_apv_10_7/usr/click/lib/libparser/commands.pm
===================================================================
--- /branches/rel_apv_10_7/usr/click/lib/libparser/commands.pm	(revision 39033)
+++ /branches/rel_apv_10_7/usr/click/lib/libparser/commands.pm	(working copy)
@@ -43250,6 +43250,566 @@
 
 # vxlan end
 
+# geneve begin
+	{
+		obj_type => "MENU",
+		name => "geneve",
+		parent_menu => ".",
+		uniq_name => "root_geneve",
+		cmd_attribute => "CMD_ARRAYOS|CMD_NORMAL",
+		user_level => "CLI_LEVEL_CONFIG",
+		help_string => "Configure GENEVE",
+	},
+	{
+		obj_type => "ITEM",
+		name => "interface",
+		menu => "root_geneve",
+		cmd_attribute => "CMD_ARRAYOS|CMD_NORMAL|CMD_GLOBAL",
+		user_level => "CLI_LEVEL_CONFIG",
+		help_string => "Create a GENEVE interface",
+		function_name => "set_geneve",
+		function_args => [ {
+		                     type => "STRING",
+				     help_string => "GENEVE interface name",
+				     optional => "NO",
+				 },
+				 {
+		                     type => "U32",
+				     help_string => "VNI number",
+				     optional => "NO",
+				 },
+			 ],
+	},
+	{
+		obj_type => "ITEM",
+		name => "port",
+		menu => "root_geneve",
+		cmd_attribute => "CMD_ARRAYOS|CMD_NORMAL|CMD_GLOBAL|CMD_KERN_API",
+		user_level => "CLI_LEVEL_CONFIG",
+		help_string => "Configure GENEVE port",
+		function_name => "geneve_port_func",
+		function_args => [ {
+		                     type => "U16",
+				     help_string => "GENEVE port number (1025-65000, default = 6081)",
+				     optional => "NO",
+				     min => "1025",
+				     max => "65000",
+				 }, ],
+	},
+	{
+		obj_type => "ITEM",
+		name => "enable",
+		menu => "root_geneve",
+		cmd_attribute => "CMD_ARRAYOS|CMD_NORMAL|CMD_GLOBAL|CMD_KERN_API",
+		user_level => "CLI_LEVEL_CONFIG",
+		help_string => "Enable GENEVE",
+		function_name => "geneve_enable_func",
+		function_args => [],
+	},
+	{
+		obj_type => "ITEM",
+		name => "disable",
+		menu => "root_geneve",
+		cmd_attribute => "CMD_ARRAYOS|CMD_NORMAL|CMD_GLOBAL|CMD_KERN_API",
+		user_level => "CLI_LEVEL_CONFIG",
+		help_string => "Disable GENEVE",
+		function_name => "geneve_disable_func",
+		function_args => [],
+	},
+	{
+		obj_type => "ITEM",
+		name => "learn",
+		menu => "root_geneve",
+		cmd_attribute => "CMD_ARRAYOS|CMD_NORMAL|CMD_GLOBAL|CMD_KERN_API",
+		user_level => "CLI_LEVEL_CONFIG",
+		help_string => "Enable or disable GENEVE learning function",
+		function_name => "geneve_learn_func",
+		function_args => [{
+							type => "STRING",
+							help_string => "on or off",
+							optional => "NO",
+						},],
+	},
+	{
+		obj_type => "ITEM",
+		name => "tunnel",
+		menu => "root_geneve",
+		cmd_attribute => "CMD_ARRAYOS|CMD_NORMAL|CMD_GLOBAL",
+		user_level => "CLI_LEVEL_CONFIG",
+		help_string => "Create a GENEVE tunnel",
+		function_name => "geneve_tunnel",
+		function_args => [
+						{
+							type => "STRING",
+							help_string => "Tunnel name",
+							optional => "NO",
+						},
+						{
+							type => "IPADDR",
+							help_string => "Local GTEP IP",
+							optional => "NO",
+						},
+						{
+							type => "IPADDR",
+							help_string => "Remote GTEP IP",
+							optional => "NO",
+						},
+					  ],
+	},
+	{
+		obj_type => "ITEM",
+		name => "bind",
+		menu => "root_geneve",
+		cmd_attribute => "CMD_ARRAYOS|CMD_NORMAL|CMD_GLOBAL",
+		user_level => "CLI_LEVEL_CONFIG",
+		help_string => "Bind a GENEVE interface to a GENEVE tunnel",
+		function_name => "geneve_bind",
+		function_args => [
+						{
+							type => "STRING",
+							help_string => "GENEVE interface name",
+							optional => "NO",
+						},
+						{
+							type => "STRING",
+							help_string => "Tunnel name",
+							optional => "NO",
+						},
+					  ],
+	},
+	{
+		obj_type => "ITEM",
+		name => "associate",
+		menu => "root_geneve",
+		cmd_attribute => "CMD_ARRAYOS|CMD_NORMAL|CMD_GLOBAL",
+		user_level => "CLI_LEVEL_CONFIG",
+		help_string => "Associate GENEVE with VLAN to enable GENEVE gateway function",
+		function_name => "geneve_associate",
+		function_args => [
+						{
+							type => "STRING",
+							help_string => "GENEVE interface name",
+							optional => "NO",
+						},
+						{
+							type => "STRING",
+							help_string => "VLAN interface name",
+							optional => "NO",
+						},
+					  ],
+	},
+	{
+		obj_type => "MENU",
+		name => "forwarding",
+		parent_menu => "root_geneve",
+		uniq_name => "root_geneve_forwarding",
+		cmd_attribute => "CMD_ARRAYOS|CMD_NORMAL",
+		user_level => "CLI_LEVEL_CONFIG",
+		help_string => "Configure GENEVE forwarding entries",
+	},
+	{
+		obj_type => "ITEM",
+		name => "remote",
+		menu => "root_geneve_forwarding",
+		cmd_attribute => "CMD_ARRAYOS|CMD_NORMAL|CMD_GLOBAL|CMD_KERN_API",
+		user_level => "CLI_LEVEL_CONFIG",
+		help_string => "Add a static GENEVE forwarding entry to remote GTEP",
+		function_name => "geneve_forwarding_remote_add",
+		function_args => [
+						{
+							type => "U32",
+							help_string => "VNI number",
+							optional => "NO",
+						},
+						{
+							type => "STRING",
+							help_string => "Destination MAC address (x:x:x:x:x:x)",
+							optional => "NO",
+						},
+						{
+							type => "IPADDR",
+							help_string => "Remote GTEP IP address",
+							optional => "NO",
+						},
+					  ],
+	},
+	{
+		obj_type => "ITEM",
+		name => "local",
+		menu => "root_geneve_forwarding",
+		cmd_attribute => "CMD_ARRAYOS|CMD_NORMAL|CMD_GLOBAL|CMD_KERN_API",
+		user_level => "CLI_LEVEL_CONFIG",
+		help_string => "Add a static GENEVE forwarding entry to L2 interface",
+		function_name => "geneve_forwarding_local_add",
+		function_args => [
+						{
+							type => "U32",
+							help_string => "VNI number",
+							optional => "NO",
+						},
+						{
+							type => "STRING",
+							help_string => "Destination MAC address (x:x:x:x:x:x)",
+							optional => "NO",
+						},
+					  ],
+	},
+	{
+		obj_type => "MENU",
+		name => "geneve",
+		parent_menu => "root_no",
+		uniq_name => "root_no_geneve",
+		help_string => "Remove GENEVE settings",
+		cmd_attribute => "CMD_ARRAYOS|CMD_NORMAL|CMD_GLOBAL",
+		user_level => "CLI_LEVEL_ENABLE",
+	},
+	{
+		obj_type => "ITEM",
+		name => "interface",
+		menu => "root_no_geneve",
+		cmd_attribute => "CMD_ARRAYOS|CMD_NORMAL|CMD_GLOBAL",
+		user_level => "CLI_LEVEL_CONFIG",
+		help_string => "Delete a GENEVE interface",
+		function_name => "no_geneve",
+		function_args => [ {
+		                     type => "STRING",
+				     help_string => "GENEVE interface name",
+				     optional => "NO",
+				 },
+			 ],
+	},
+	{
+		obj_type => "ITEM",
+		name => "tunnel",
+		menu => "root_no_geneve",
+		cmd_attribute => "CMD_ARRAYOS|CMD_NORMAL|CMD_GLOBAL",
+		user_level => "CLI_LEVEL_CONFIG",
+		help_string => "Delete a GENEVE tunnel",
+		function_name => "no_geneve_tunnel",
+		function_args => [
+						{
+							type => "STRING",
+							help_string => "Tunnel name",
+							optional => "NO",
+						},
+					  ],
+	},
+	{
+		obj_type => "ITEM",
+		name => "bind",
+		menu => "root_no_geneve",
+		cmd_attribute => "CMD_ARRAYOS|CMD_NORMAL|CMD_GLOBAL",
+		user_level => "CLI_LEVEL_CONFIG",
+		help_string => "Unbind GENEVE interface from GENEVE tunnel",
+		function_name => "no_geneve_bind",
+		function_args => [
+						{
+							type => "STRING",
+							help_string => "GENEVE interface name",
+							optional => "NO",
+						},
+						{
+							type => "STRING",
+							help_string => "Tunnel name",
+							optional => "NO",
+						},
+					  ],
+	},
+	{
+		obj_type => "ITEM",
+		name => "associate",
+		menu => "root_no_geneve",
+		cmd_attribute => "CMD_ARRAYOS|CMD_NORMAL|CMD_GLOBAL",
+		user_level => "CLI_LEVEL_CONFIG",
+		help_string => "Disassociate GENEVE from VLAN",
+		function_name => "no_geneve_associate",
+		function_args => [
+						{
+							type => "STRING",
+							help_string => "GENEVE interface name",
+							optional => "NO",
+						},
+						{
+							type => "STRING",
+							help_string => "VLAN interface name",
+							optional => "NO",
+						},
+					  ],
+	},
+	{
+		obj_type => "MENU",
+ 		name => "forwarding",
+		parent_menu => "root_no_geneve",
+		uniq_name => "root_no_geneve_forwarding",
+		help_string => "Delete GENEVE forwarding entries",
+		cmd_attribute => "CMD_ARRAYOS|CMD_NORMAL|CMD_GLOBAL",
+		user_level => "CLI_LEVEL_ENABLE",
+	},
+	{
+		obj_type => "ITEM",
+		name => "remote",
+		menu => "root_no_geneve_forwarding",
+		cmd_attribute => "CMD_ARRAYOS|CMD_NORMAL|CMD_GLOBAL|CMD_KERN_API",
+		user_level => "CLI_LEVEL_CONFIG",
+		help_string => "Delete a static GENEVE forwarding entry to remote GTEP",
+		function_name => "geneve_forwarding_remote_del",
+		function_args => [
+						{
+							type => "U32",
+							help_string => "VNI number",
+							optional => "NO",
+						},
+						{
+							type => "STRING",
+							help_string => "Destination MAC address (x:x:x:x:x:x)",
+							optional => "NO",
+						},
+					  ],
+	},
+	{
+		obj_type => "ITEM",
+		name => "local",
+		menu => "root_no_geneve_forwarding",
+		cmd_attribute => "CMD_ARRAYOS|CMD_NORMAL|CMD_GLOBAL|CMD_KERN_API",
+		user_level => "CLI_LEVEL_CONFIG",
+		help_string => "Delete a static GENEVE forwarding entry to L2 interface",
+		function_name => "geneve_forwarding_local_del",
+		function_args => [
+						{
+							type => "U32",
+							help_string => "VNI number",
+							optional => "NO",
+						},
+						{
+							type => "STRING",
+							help_string => "Destination MAC address (x:x:x:x:x:x)",
+							optional => "NO",
+						},
+					  ],
+	},
+	{
+		obj_type => "MENU",
+		name => "geneve",
+		cmd_attribute => "CMD_ARRAYOS|CMD_NORMAL",
+		user_level => "CLI_LEVEL_ENABLE",
+		parent_menu => "root_show",
+		uniq_name => "root_show_geneve",
+		help_string => "Display GENEVE configurations",
+	},
+	{
+		obj_type => "ITEM",
+		name => "interface",
+		menu => "root_show_geneve",
+		cmd_attribute => "CMD_ARRAYOS|CMD_NORMAL|CMD_GLOBAL",
+		user_level => "CLI_LEVEL_ENABLE",
+		help_string => "Display GENEVE interface configurations",
+		function_name => "show_geneve_interface",
+		function_args => [],
+	},
+	{
+		obj_type => "ITEM",
+		name => "port",
+		menu => "root_show_geneve",
+		cmd_attribute => "CMD_ARRAYOS|CMD_NORMAL|CMD_GLOBAL",
+		user_level => "CLI_LEVEL_ENABLE",
+		help_string => "Display GENEVE port configurations",
+		function_name => "show_geneve_port",
+		function_args => [],
+	},
+	{
+		obj_type => "ITEM",
+		name => "learn",
+		menu => "root_show_geneve",
+		cmd_attribute => "CMD_ARRAYOS|CMD_NORMAL|CMD_GLOBAL",
+		user_level => "CLI_LEVEL_ENABLE",
+		help_string => "Display GENEVE learn configurations",
+		function_name => "show_geneve_learn",
+		function_args => [],
+	},
+	{
+		obj_type => "ITEM",
+		name => "bind",
+		menu => "root_show_geneve",
+		cmd_attribute => "CMD_ARRAYOS|CMD_NORMAL|CMD_GLOBAL",
+		user_level => "CLI_LEVEL_ENABLE",
+		help_string => "Display tunnel binding configurations",
+		function_name => "show_geneve_bind",
+		function_args => [ {
+		                     type => "STRING",
+				     help_string => "GENEVE interface name",
+				     optional => "YES",
+				     default_value => "\"\"",
+				 },
+			 ],
+	},
+	{
+		obj_type => "ITEM",
+		name => "associate",
+		menu => "root_show_geneve",
+		cmd_attribute => "CMD_ARRAYOS|CMD_NORMAL|CMD_GLOBAL",
+		user_level => "CLI_LEVEL_ENABLE",
+		help_string => "Display associated Layer 2 configurations",
+		function_name => "show_geneve_associate",
+		function_args => [ {
+		                     type => "STRING",
+				     help_string => "GENEVE interface name",
+				     optional => "YES",
+				     default_value => "\"\"",
+				 },
+			 ],
+	},
+	{
+		obj_type => "ITEM",
+		name => "tunnel",
+		menu => "root_show_geneve",
+		cmd_attribute => "CMD_ARRAYOS|CMD_NORMAL|CMD_GLOBAL",
+		user_level => "CLI_LEVEL_ENABLE",
+		help_string => "Display GENEVE tunnel configurations",
+		function_name => "show_geneve_tunnel",
+		function_args => [ {
+		                     type => "STRING",
+				     help_string => "GENEVE tunnel name",
+				     optional => "YES",
+				     default_value => "\"\"",
+				 },
+			 ],
+	},
+	{
+		obj_type => "ITEM",
+		name => "forwarding",
+		menu => "root_show_geneve",
+		cmd_attribute => "CMD_ARRAYOS|CMD_NORMAL|CMD_GLOBAL",
+		user_level => "CLI_LEVEL_ENABLE",
+		help_string => "Display all GENEVE forwarding entries",
+		function_name => "show_geneve_forwarding",
+		function_args => [ {
+		                     type => "U32",
+				     help_string => "VNI number",
+				     optional => "NO",
+				 },
+				 {
+		                     type => "STRING",
+				     help_string => "MAC address",
+				     optional => "YES",
+				     default_value => "\"\"",
+				 },
+			 ],
+	},
+	{
+		obj_type => "ITEM",
+		name => "all",
+		menu => "root_show_geneve",
+		cmd_attribute => "CMD_ARRAYOS|CMD_NORMAL|CMD_GLOBAL",
+		user_level => "CLI_LEVEL_ENABLE",
+		help_string => "Display all configurations of GENEVE",
+		function_name => "show_geneve_all",
+		function_args => [],
+	},
+	{
+		obj_type => "MENU",
+ 		name => "geneve",
+		cmd_attribute => "CMD_ARRAYOS|CMD_NORMAL",
+		user_level => "CLI_LEVEL_ENABLE",
+		parent_menu => "root_clear",
+		uniq_name => "root_clear_geneve",
+		help_string => "Clear GENEVE configurations",
+ 	},
+	{
+		obj_type => "ITEM",
+		name => "bind",
+		menu => "root_clear_geneve",
+		cmd_attribute => "CMD_ARRAYOS|CMD_NORMAL|CMD_GLOBAL",
+		user_level => "CLI_LEVEL_CONFIG",
+		help_string => "Clear tunnel binding configurations of GENEVE interfaces",
+		function_name => "clear_geneve_bind",
+		function_args => [ {
+		                     type => "STRING",
+				     help_string => "GENEVE interface name",
+				     optional => "YES",
+				     default_value => "\"\"",
+				 },
+			 ],
+	},
+	{
+		obj_type => "ITEM",
+		name => "associate",
+		menu => "root_clear_geneve",
+		cmd_attribute => "CMD_ARRAYOS|CMD_NORMAL|CMD_GLOBAL",
+		user_level => "CLI_LEVEL_CONFIG",
+		help_string => "Clear associated Layer 2 configurations",
+		function_name => "clear_geneve_associate",
+		function_args => [],
+	},
+	{
+		obj_type => "ITEM",
+		name => "tunnel",
+		menu => "root_clear_geneve",
+		cmd_attribute => "CMD_ARRAYOS|CMD_NORMAL|CMD_GLOBAL",
+		user_level => "CLI_LEVEL_CONFIG",
+		help_string => "Clear all GENEVE tunnels",
+		function_name => "clear_geneve_tunnel",
+		function_args => [],
+	},
+	{
+		obj_type => "ITEM",
+		name => "interface",
+		menu => "root_clear_geneve",
+		cmd_attribute => "CMD_ARRAYOS|CMD_NORMAL|CMD_GLOBAL",
+		user_level => "CLI_LEVEL_CONFIG",
+		help_string => "Clear all GENEVE interfaces",
+		function_name => "clear_geneve_interface",
+		function_args => [],
+	},
+	{
+		obj_type => "ITEM",
+		name => "all",
+		menu => "root_clear_geneve",
+		cmd_attribute => "CMD_ARRAYOS|CMD_NORMAL|CMD_GLOBAL",
+		user_level => "CLI_LEVEL_CONFIG",
+		help_string => "Clear all GENEVE configurations",
+		function_name => "clear_geneve_all",
+		function_args => [],
+	},
+	{
+		obj_type => "MENU",
+		name => "forwarding",
+		cmd_attribute => "CMD_ARRAYOS|CMD_NORMAL",
+		user_level => "CLI_LEVEL_ENABLE",
+		parent_menu => "root_clear_geneve",
+		uniq_name => "root_clear_geneve_forwarding",
+		help_string => "Clear GENEVE forwarding entries",
+	},
+	{
+		obj_type => "ITEM",
+		name => "static",
+		menu => "root_clear_geneve_forwarding",
+		cmd_attribute => "CMD_ARRAYOS|CMD_NORMAL|CMD_GLOBAL|CMD_KERN_API|CMD_KAPI_LOCK",
+		user_level => "CLI_LEVEL_CONFIG",
+		help_string => "Clear all static GENEVE forwarding entries",
+		function_name => "clear_geneve_forwarding_static",
+		function_args => [ {
+		                     type => "U32",
+				     help_string => "VNI number",
+				     optional => "NO",
+				 },
+			 ],
+	},
+	{
+		obj_type => "ITEM",
+		name => "dynamic",
+		menu => "root_clear_geneve_forwarding",
+		cmd_attribute => "CMD_ARRAYOS|CMD_NORMAL|CMD_GLOBAL|CMD_KERN_API",
+		user_level => "CLI_LEVEL_CONFIG",
+		help_string => "Clear all dynamic GENEVE forwarding entries",
+		function_name => "clear_geneve_forwarding_dynamic",
+		function_args => [ {
+		                     type => "U32",
+				     help_string => "VNI number",
+				     optional => "NO",
+				 },
+			 ],
+	},
+# geneve end
 
 # Begin - XMLRPC Commands
 	{
Index: /branches/rel_apv_10_7/usr/src/sys/net/if_vxlan.c
===================================================================
--- /branches/rel_apv_10_7/usr/src/sys/net/if_vxlan.c	(revision 39033)
+++ /branches/rel_apv_10_7/usr/src/sys/net/if_vxlan.c	(working copy)
@@ -3705,11 +3705,62 @@
 	return (error);
 }
 
-static void 
+ca_errcode_t geneve_port_func(void* pcb, uint16_t vxl_port) {
+	app_printf(pcb, "GENEVE port: %d\n", vxl_port);
+	return 0;
+}
+
+ca_errcode_t geneve_enable_func(void* pcb) {
+	app_printf(pcb, "GENEVE enable.\n");
+	return 0;
+}
+
+ca_errcode_t geneve_disable_func(void* pcb) {
+	app_printf(pcb, "GENEVE disable.\n");
+	return 0;
+}
+
+ca_errcode_t geneve_learn_func(void* pcb, char* learn_str) {
+	app_printf(pcb, "GENEVE learn %s.\n", learn_str);
+	return 0;
+}
+
+int geneve_forwarding_remote_add(void* pcb, uint32_t vni, char* mac, char* vtep_ip) {
+	app_printf(pcb, "GENEVE forward remote add vni: %d, mac: %s, dstip: %s\n", vni, mac, vtep_ip);
+	return 0;
+}
+
+int geneve_forwarding_remote_del(void* pcb, uint32_t vni, char* mac) {
+	app_printf(pcb, "GENEVE forward remote del vni: %d, mac: %s\n", vni, mac);
+	return 0;
+}
+
+int geneve_forwarding_local_add(void* pcb, uint32_t vni, char* mac) {
+	app_printf(pcb, "GENEVE forward local add vni: %d, mac: %s\n", vni, mac);
+	return 0;
+}
+
+int geneve_forwarding_local_del(void* pcb, uint32_t vni, char* mac) {
+	app_printf(pcb, "GENEVE forward local del vni: %d, dstmac: %s\n", vni, mac);
+	return 0;
+}
+
+
+int clear_geneve_forwarding_static(void* pcb, uint32_t vni) {
+	app_printf(pcb, "Clear GENEVE forward static vni: %d\n", vni);
+	return 0;
+}
+
+int clear_geneve_forwarding_dynamic(void* pcb, uint32_t vni) {
+	app_printf(pcb, "Clear GENEVE forward dynamic vni: %d\n", vni);
+	return 0;
+}
+
+static void
 vtep_init(void)
 {
 	int i;
-	
+
 	if(vtep_inited) {
 		return;
 	}
