BAL and Maple Release 2.2

Signed-off-by: Shad Ansari <developer@Carbon.local>
diff --git a/bal_release/src/common/include/bal_utils_msg.h b/bal_release/src/common/include/bal_utils_msg.h
new file mode 100644
index 0000000..d6721fc
--- /dev/null
+++ b/bal_release/src/common/include/bal_utils_msg.h
@@ -0,0 +1,180 @@
+/******************************************************************************
+ *
+ *  <:copyright-BRCM:2016:DUAL/GPL:standard
+ *  
+ *     Copyright (c) 2016 Broadcom
+ *     All Rights Reserved
+ *  
+ *  Unless you and Broadcom execute a separate written software license
+ *  agreement governing use of this software, this software is licensed
+ *  to you under the terms of the GNU General Public License version 2
+ *  (the "GPL"), available at http://www.broadcom.com/licenses/GPLv2.php,
+ *  with the following added to such license:
+ *  
+ *     As a special exception, the copyright holders of this software give
+ *     you permission to link this software with independent modules, and
+ *     to copy and distribute the resulting executable under terms of your
+ *     choice, provided that you also meet, for each linked independent
+ *     module, the terms and conditions of the license of that module.
+ *     An independent module is a module which is not derived from this
+ *     software.  The special exception does not apply to any modifications
+ *     of the software.
+ *  
+ *  Not withstanding the above, under no circumstances may you combine
+ *  this software in any way with any other Broadcom software provided
+ *  under a license other than the GPL, without Broadcom's express prior
+ *  written consent.
+ *  
+ *  :>
+ *
+ *****************************************************************************/
+ 
+/******************************************************************************
+The message format will look like the following
+
+  -----------------------------------------------------------------------------------
+ |             BAL Header           |                  | Payload Data               |
+  ----------------------------------|------------------------------------------------
+ | *bcmos_header |                  |  App Header      |                            |
+  -----------------------------------------------------------------------------------
+ |               |                  |  version         |                            |
+ |   type        |   msg_type       |  obj_key         | bal_util_ind_flow_t        |
+ |               |   msg_id         |  status          |                            |
+  -----------------------------------------------------------------------------------
+
+ *The bcmos Header is actually the first field of BAL Header structure (bal_comm_msg_hdr_t)
+ 
+ type can be: 
+             BCMBAL_SWITCH_UTIL_MSG
+             BCMBAL_MAC_UTIL_MSG
+              
+ msg_type can be:
+             BAL_MSG_IND,
+             BAL_MSG_AUTO_IND
+             
+ msg_id is module specific, but contains two 16 bits fields (OBJECT_ID, OPERATION_ID)
+ see  bal_objs.h for OBJECT_ID details
+ The OPERATION_ID should be unique within the OBJECT - see example below
+ bal_msg.h
+ 
+ status is for indication message to show general results. The value is bcmos_errno.
+
+*********************************************************************************/
+ 
+/**
+ * @file bal_utils_msg.h
+ *
+ * @brief Common header for messages sent between Utils and Core
+ *
+ * @ingroup apps
+ */
+
+#ifndef  _BAL_UTIL_MSG_H_
+#define  _BAL_UTIL_MSG_H_
+
+/*@{*/
+
+#include <bal_msg.h>
+#include <stdint.h>
+
+#define BAL_UTIL_MSG_VERSION  1
+
+/* access terminal request list,
+ */  
+typedef enum
+{
+   BAL_UTIL_OPER_ACC_TERM_CONNECT,
+   BAL_UTIL_OPER_ACC_TERM_DISCONNECT
+} bal_util_oper_acc_term;
+
+/* subscriber terminal request list,
+ */  
+typedef enum
+{
+   BAL_UTIL_OPER_SUB_TERM_ADD,
+   BAL_UTIL_OPER_SUB_TERM_REMOVE,
+   BAL_UTIL_OPER_SUB_TERM_CLEAR,
+   BAL_UTIL_OPER_SUB_TERM_DISCOVERY
+} bal_util_oper_sub_term;
+
+/* interface request list,
+ */  
+typedef enum
+{
+   BAL_UTIL_OPER_IF_UP,
+   BAL_UTIL_OPER_IF_DOWN
+} bal_util_oper_if;
+
+/* flow request list,
+ */  
+typedef enum
+{
+   BAL_UTIL_OPER_FLOW_ADD,        
+   BAL_UTIL_OPER_FLOW_REMOVE,
+   BAL_UTIL_OPER_FLOW_CLEAR
+} bal_util_oper_flow;
+
+typedef enum
+{
+   BAL_UTIL_FLOW_IND_SEND_NONE,        
+   BAL_UTIL_FLOW_IND_SEND_SUCCESS,
+   BAL_UTIL_FLOW_IND_SEND_FAIL
+} bal_util_flow_ind;
+
+/* group request list,
+ */  
+typedef enum
+{
+   BAL_UTIL_OPER_GROUP_CREATE,
+   BAL_UTIL_OPER_GROUP_ADD,        
+   BAL_UTIL_OPER_GROUP_REMOVE,
+   BAL_UTIL_OPER_GROUP_SET,
+   BAL_UTIL_OPER_GROUP_DESTROY
+} bal_util_oper_group;
+
+typedef enum
+{
+   BAL_UTIL_OPER_AGG_PORT_ADD,
+   BAL_UTIL_OPER_AGG_PORT_REMOVE,
+   BAL_UTIL_OPER_AGG_PORT_CLEAR
+} bal_util_oper_agg_port;
+
+/* Macro to retrieve the name string of the GROUP oper */
+#define BCMBAL_UTIL_GROUP_OPER_STR_GET(__op_type__)               \
+        ( BAL_UTIL_OPER_GROUP_CREATE  == __op_type__ ) ? "create" :   \
+        ( BAL_UTIL_OPER_GROUP_ADD     == __op_type__ ) ? "add" :      \
+        ( BAL_UTIL_OPER_GROUP_REMOVE  == __op_type__ ) ? "remove" :   \
+        ( BAL_UTIL_OPER_GROUP_SET     == __op_type__ ) ? "set" :      \
+        ( BAL_UTIL_OPER_GROUP_DESTROY == __op_type__ ) ? "destroy" :  \
+        "unknown"                                               
+
+/* bal_app_msg_obj_key_t allow applications to id which instance of object
+ * this message should be processed
+ */
+typedef union bal_util_msg_obj_key
+{
+    bcmbal_access_terminal_key acc_term_key;
+    bcmbal_interface_key if_key;
+    bcmbal_subscriber_terminal_key sub_term_key;
+    bcmbal_flow_key flow_key;
+    bcmbal_group_key group_key;
+    bcmbal_tm_sched_key tm_sched_key;
+} bal_util_msg_obj_key;
+
+#define  BCMBAL_INVALID_TUNNEL_ID 0xffffffff
+ 
+ /* indication message header */
+ typedef struct bal_util_msg_ind
+ {  
+     bal_comm_msg_hdr  comm_hdr; /* Communication header */
+     uint32_t          version;  /* version of the app message format */
+     bal_util_msg_obj_key obj_key;
+     int32_t           status;   /* bcmos_errno */
+     /* Optional custom BAL MAC/SWITCH UTIL indication data follows */
+     char              data[0];
+ } bal_util_msg_ind;
+ 
+ /* auto indication message header */
+ typedef bal_util_msg_ind bal_util_msg_auto_ind;
+
+#endif  /* _BAL_UTIL_MSG_H */