Netopeer NETCONF server integration

Amendments:

- Removed local copy of golang package. Added instructions to download it.
- Removed cached files which are created when transapi is built.
- Added netopeer as a build-able Makefile component.
  Updated documentation.

Change-Id: I532e813b81a0531648c5a6bcb048208700cf57a4
diff --git a/netopeer/voltha-grpc-client/voltha-defs.h b/netopeer/voltha-grpc-client/voltha-defs.h
new file mode 100644
index 0000000..eac9360
--- /dev/null
+++ b/netopeer/voltha-grpc-client/voltha-defs.h
@@ -0,0 +1,456 @@
+#ifndef VOLTHA_DEFS
+#define VOLTHA_DEFS
+
+#include <stdint.h>
+
+typedef enum {
+    OUTPUT = 0,
+    MPLS_TTL = 1,
+    PUSH = 2,
+    POP_MPLS = 3,
+    GROUP = 4,
+    NW_TTL = 5,
+    SET_FIELD = 6,
+    EXPERIMENTER = 7
+} isOfpAction_ActionEnum;
+
+typedef enum {
+    DEBUG = 0,
+    INFO = 1,
+    WARNING = 2,
+    ERROR = 3,
+    CRITICAL = 4
+} LogLevelEnum;
+
+typedef enum {
+    OFPIT_INVALID = 0,
+    OFPIT_GOTO_TABLE = 1,
+    OFPIT_WRITE_METADATA = 2,
+    OFPIT_WRITE_ACTIONS = 3,
+    OFPIT_APPLY_ACTIONS = 4,
+    OFPIT_CLEAR_ACTIONS = 5,
+    OFPIT_METER = 6,
+    OFPIT_EXPERIMENTER = 7
+} isOfpInstruction_DataEnum;
+
+typedef enum {
+    OFB_FIELD = 0,
+    EXPERIMENTER_FIELD = 1
+} isOfpOxmField_FieldEnum;
+
+typedef enum {
+    MAC = 0,
+    IPV4 = 1,
+    IPV6 = 2,
+    HOST_AND_PORT = 3
+} isDevice_AddressEnum;
+
+typedef enum {
+    HEALTHY = 0,
+    OVERLOADED = 1,
+    DYING = 1
+} HealthStatusEnum;
+
+typedef struct {
+	char* State;
+} HealthStatus;
+
+typedef struct {
+	char* MfrDesc;
+	char* HwDesc;
+	char* SwDesc;
+	char* SerialNum;
+	char* DpDesc;
+} OfpDesc;
+
+typedef struct {
+	uint32_t NBuffers;
+	uint32_t NTables;
+	uint32_t AuxiliaryId;
+	uint32_t Capabilities;
+	uint64_t DatapathId;
+} OfpSwitchFeatures;
+
+typedef struct {
+	char* Value;
+	int Type;
+} isOfpOxmField_Field;
+
+typedef struct {
+	int32_t OxmClass;
+	isOfpOxmField_Field Field;
+} OfpOxmField;
+
+typedef struct {
+	OfpOxmField* items;
+	int size;
+} OfpOxmFieldArray;
+
+typedef struct {
+	int32_t Type;
+	OfpOxmFieldArray OxmFields;
+} OfpMatch;
+
+typedef struct {
+	int Type;
+	char* Value;
+} isOfpAction_Action;
+
+typedef struct {
+	int32_t Type;
+	isOfpAction_Action Action;
+} OfpAction;
+
+typedef struct {
+	int Type;
+	char* Value;
+} isOfpInstruction_Data;
+
+typedef struct {
+	isOfpInstruction_Data Data;
+	uint32_t Type;
+} OfpInstruction;
+
+typedef struct {
+	OfpInstruction* items;
+	int size;
+} OfpInstructionArray;
+
+typedef struct {
+	uint64_t PacketCount;
+	uint64_t ByteCount;
+	OfpMatch* Match;
+	uint64_t Id;
+	uint32_t DurationSec;
+	uint32_t Priority;
+	uint32_t HardTimeout;
+	uint32_t Flags;
+	uint32_t TableId;
+	uint32_t DurationNsec;
+	uint32_t IdleTimeout;
+	uint64_t Cookie;
+	OfpInstructionArray Instructions;
+} OfpFlowStats;
+
+typedef struct {
+	OfpFlowStats* items;
+	int size;
+} OfpFlowStatsArray;
+
+typedef struct {
+	OfpFlowStatsArray Items;
+} Flows;
+
+typedef struct {
+	OfpAction* items;
+	int size;
+} OfpActionArray;
+
+typedef struct {
+	OfpActionArray Actions;
+	uint32_t Weight;
+	uint32_t WatchPort;
+	uint32_t WatchGroup;
+} OfpBucket;
+
+typedef struct {
+	OfpBucket* items;
+	int size;
+} OfpBucketArray;
+
+typedef struct {
+	int32_t Type;
+	uint32_t GroupId;
+	OfpBucketArray Buckets;
+} OfpGroupDesc;
+
+typedef struct {
+	uint64_t PacketCount;
+	uint64_t ByteCount;
+} OfpBucketCounter;
+
+typedef struct {
+	OfpBucketCounter* items;
+	int size;
+} OfpBucketCounterArray;
+
+typedef struct {
+	uint32_t RefCount;
+	uint64_t PacketCount;
+	uint64_t ByteCount;
+	uint32_t DurationSec;
+	uint32_t DurationNsec;
+	OfpBucketCounterArray BucketStats;
+	uint32_t GroupId;
+} OfpGroupStats;
+
+typedef struct {
+	OfpGroupDesc* Desc;
+	OfpGroupStats* Stats;
+} OfpGroupEntry;
+
+typedef struct {
+	OfpGroupEntry* items;
+	int size;
+} OfpGroupEntryArray;
+
+typedef struct {
+	OfpGroupEntryArray Items;
+} FlowGroups;
+
+typedef struct {
+	uint32_t SampleFreq;
+	char* Name;
+	int32_t Type;
+	int Enabled;
+} PmConfig;
+
+typedef struct {
+	PmConfig* items;
+	int size;
+} PmConfigArray;
+
+typedef struct {
+	char* GroupName;
+	uint32_t GroupFreq;
+	int Enabled;
+	PmConfigArray Metrics;
+} PmGroupConfig;
+
+typedef struct {
+	PmGroupConfig* items;
+	int size;
+} PmGroupConfigArray;
+
+typedef struct {
+	uint32_t items;
+	int size;
+} uint32Array;
+
+typedef struct {
+	uint32Array HwAddr;
+	uint32_t State;
+	uint32_t Curr;
+	uint32_t MaxSpeed;
+	uint32_t PortNo;
+	char* Name;
+	uint32_t Config;
+	uint32_t Advertised;
+	uint32_t Supported;
+	uint32_t Peer;
+	uint32_t CurrSpeed;
+} OfpPort;
+
+typedef struct {
+	char* Value;
+	int Type;
+} isDevice_Address;
+
+typedef struct {
+	char* DeviceId;
+	uint32_t ChannelId;
+	uint32_t OnuId;
+	uint32_t OnuSessionId;
+} Device_ProxyAddress;
+
+typedef struct {
+	char** items;
+	int size;
+} stringArray;
+
+typedef struct {
+	uint8_t* items;
+	int size;
+} uint8Array;
+
+typedef struct {
+	uint8Array Value;
+	char* TypeUrl;
+} Any;
+
+typedef struct {
+	int32_t LogLevel;
+	Any* AdditionalConfig;
+} AdapterConfig;
+
+typedef struct {
+	AdapterConfig* Config;
+	Any* AdditionalDescription;
+	stringArray LogicalDeviceIds;
+	char* Id;
+	char* Vendor;
+	char* Version;
+} Adapter;
+
+typedef struct {
+	int32_t Key;
+	char* Value;
+} AlarmFilterRule;
+
+typedef struct {
+	AlarmFilterRule* items;
+	int size;
+} AlarmFilterRuleArray;
+
+typedef struct {
+	char* Id;
+	AlarmFilterRuleArray Rules;
+} AlarmFilter;
+
+typedef struct {
+	AlarmFilter* items;
+	int size;
+} AlarmFilterArray;
+
+typedef struct {
+	char* Id;
+	OfpPort* OfpPort;
+	char* DeviceId;
+	uint32_t DevicePortNo;
+	int RootPort;
+} LogicalPort;
+
+typedef struct {
+	LogicalPort* items;
+	int size;
+} LogicalPortArray;
+
+typedef struct {
+	FlowGroups* FlowGroups;
+	char* Id;
+	uint64_t DatapathId;
+	OfpDesc* Desc;
+	OfpSwitchFeatures* SwitchFeatures;
+	char* RootDeviceId;
+	LogicalPortArray Ports;
+	Flows* Flows;
+} LogicalDevice;
+
+typedef struct {
+	LogicalDevice* items;
+	int size;
+} LogicalDeviceArray;
+
+typedef struct {
+	uint32_t PortNo;
+	char* DeviceId;
+} Port_PeerPort;
+
+typedef struct {
+	Port_PeerPort* items;
+	int size;
+} Port_PeerPortArray;
+
+typedef struct {
+	uint32_t PortNo;
+	char* Label;
+	int32_t Type;
+	int32_t AdminState;
+	int32_t OperStatus;
+	char* DeviceId;
+	Port_PeerPortArray Peers;
+} Port;
+
+typedef struct {
+	Port* items;
+	int size;
+} PortArray;
+
+typedef struct {
+	uint32_t DefaultFreq;
+	int Grouped;
+	int FreqOverride;
+	PmGroupConfigArray Groups;
+	PmConfigArray Metrics;
+	char* Id;
+} PmConfigs;
+
+typedef struct {
+	char* Id;
+	char* Adapter;
+	int AcceptsBulkFlowUpdate;
+	int AcceptsAddRemoveFlowUpdates;
+} DeviceType;
+
+typedef struct {
+	DeviceType* items;
+	int size;
+} DeviceTypeArray;
+
+typedef struct {
+	char* Reason;
+	char* ConnectStatus;
+	FlowGroups* FlowGroups;
+	char* Id;
+	char* Model;
+	Device_ProxyAddress* ProxyAddress;
+	char* OperStatus;
+	uint32_t ParentPortNo;
+	char* HardwareVersion;
+	Flows* Flows;
+	PmConfigs* PmConfigs;
+	char* AdminState;
+	char* Type;
+	char* ParentId;
+	char* Vendor;
+	char* SerialNumber;
+	uint32_t Vlan;
+	isDevice_Address Address;
+	Any* Custom;
+	PortArray Ports;
+	int Root;
+	char* FirmwareVersion;
+	char* SoftwareVersion;
+	char* Adapter;
+} Device;
+
+typedef struct {
+	Device* items;
+	int size;
+} DeviceArray;
+
+typedef struct {
+	char* Id;
+	LogicalDeviceArray LogicalDevices;
+	DeviceArray Devices;
+} DeviceGroup;
+
+typedef struct {
+	DeviceGroup* items;
+	int size;
+} DeviceGroupArray;
+
+typedef struct {
+	Adapter* items;
+	int size;
+} AdapterArray;
+
+typedef struct {
+	AlarmFilterArray AlarmFilters;
+	char* InstanceId;
+	HealthStatus Health;
+	AdapterArray Adapters;
+	LogicalDeviceArray LogicalDevices;
+	DeviceGroupArray DeviceGroups;
+	char* Version;
+	char* LogLevel;
+	DeviceArray Devices;
+	DeviceTypeArray DeviceTypes;
+} VolthaInstance;
+
+typedef struct {
+	VolthaInstance* items;
+	int size;
+} VolthaInstanceArray;
+
+typedef struct {
+	char* Version;
+	char* LogLevel;
+	VolthaInstanceArray Instances;
+	AdapterArray Adapters;
+	LogicalDeviceArray LogicalDevices;
+	DeviceArray Devices;
+	DeviceGroupArray DeviceGroups;
+} Voltha;
+
+#endif