package main

import (
	"encoding/json"
	"log"
	"os"
)

type AbstractConfig struct {
	MulticastConfig struct {
		MIPAddr string `json:"MIpAddr"`
		MPort   string `json:"MPort"`
	} `json:"MulticastConfig"`
	InterfaceConfig struct {
		ExistingInterface string `json:"ExistingInterface"`
		BridgeIPCIDR      string `json:"BridgeIpCIDR"`
	} `json:"InterfaceConfig"`
}

var a AbstractConfig

func init() {

	//reading json file
	file, err := os.ReadFile("zoreide.json")

	if err != nil {
		log.Println("Cannot open config file", err.Error())
		os.Exit(1)
	}

	err = json.Unmarshal([]byte(file), &a)

	if err != nil {
		log.Println("Cannot marshal json: ", err.Error())
		os.Exit(1)
	}

	MulticastEntity.MIpAddr = a.MulticastConfig.MIPAddr
	MulticastEntity.MPort = a.MulticastConfig.MPort
	MulticastEntity.MaxDatagramSize = numberlenght

	ZoreideBridge.BridgeIpCIDR = a.InterfaceConfig.BridgeIPCIDR
	ZoreideBridge.ExistingInterface = a.InterfaceConfig.ExistingInterface
	ZoreideBridge.IsActive = false

	log.Println("Inizialized Generic   Config: ", a)
	log.Println("Inizialized Interface Config: ", ZoreideBridge)
	log.Println("Inizialized Multicast Config: ", MulticastEntity)

}
