summaryrefslogtreecommitdiffstats
path: root/clover/clovisor/libclovisor/clovisor_cfg.go
diff options
context:
space:
mode:
Diffstat (limited to 'clover/clovisor/libclovisor/clovisor_cfg.go')
-rw-r--r--clover/clovisor/libclovisor/clovisor_cfg.go39
1 files changed, 38 insertions, 1 deletions
diff --git a/clover/clovisor/libclovisor/clovisor_cfg.go b/clover/clovisor/libclovisor/clovisor_cfg.go
index f3c631a..9c552da 100644
--- a/clover/clovisor/libclovisor/clovisor_cfg.go
+++ b/clover/clovisor/libclovisor/clovisor_cfg.go
@@ -25,6 +25,8 @@ import (
var redisServer string = "redis.clover-system"
var jaegerCollector string = "jaeger-collector.clover-system:14268"
var jaegerAgent string = "jaeger-agent.clover-system:6831"
+var ProtoCfg string = "clovisor_proto_cfg"
+var protoPluginCfgChan string = "clovisor_proto_plugin_cfg_chan"
/*
* redisConnect: redis client connecting to redis server
@@ -40,6 +42,7 @@ func redisConnect() *redis.Client {
func get_cfg_labels(node_name string) ([]string, error) {
client := redisConnect()
+ defer client.Close()
labels_list, err := client.LRange("clovisor_labels", 0, -1).Result()
if err != nil {
fmt.Println(err.Error())
@@ -51,6 +54,7 @@ func get_cfg_labels(node_name string) ([]string, error) {
func get_egress_match_list(pod_name string) ([]egress_match_t) {
client := redisConnect()
+ defer client.Close()
egress_cfg_list, err := client.LRange("clovior_egress_match", 0, -1).Result()
if err != nil {
fmt.Println(err.Error())
@@ -85,13 +89,24 @@ func get_egress_match_list(pod_name string) ([]egress_match_t) {
// https://www.socketloop.com/tutorials/golang-convert-ip-address-string-to-long-unsigned-32-bit-integer
func ip2Long(ip string) uint32 {
var long uint32
- binary.Read(bytes.NewBuffer(net.ParseIP(ip).To4()), binary.LittleEndian, &long)
+ //binary.Read(bytes.NewBuffer(net.ParseIP(ip).To4()), binary.LittleEndian, &long)
+ binary.Read(bytes.NewBuffer(net.ParseIP(ip).To4()), binary.BigEndian, &long)
return long
}
+func backtoIP4(ipInt int64) string {
+ // need to do two bit shifting and “0xff” masking
+ b0 := strconv.FormatInt((ipInt>>24)&0xff, 10)
+ b1 := strconv.FormatInt((ipInt>>16)&0xff, 10)
+ b2 := strconv.FormatInt((ipInt>>8)&0xff, 10)
+ b3 := strconv.FormatInt((ipInt & 0xff), 10)
+ return b0 + "." + b1 + "." + b2 + "." + b3
+}
+
func get_cfg_session_match() ([]egress_match_cfg, error) {
var ret_list []egress_match_cfg
client := redisConnect()
+ defer client.Close()
keys, err := client.HKeys("clovisor_session_match").Result()
if err != nil {
fmt.Println(err.Error())
@@ -140,5 +155,27 @@ func initJaeger(service string) (opentracing.Tracer, io.Closer) {
func get_jaeger_server() (string, error) {
client := redisConnect()
+ defer client.Close()
return client.Get("clovisor_jaeger_server").Result()
}
+
+func Monitor_proto_plugin_cfg() {
+ client := redisConnect()
+ //defer client.Close()
+
+ pubsub := client.Subscribe(protoPluginCfgChan)
+ //defer pubsub.Close()
+
+ go func() {
+ for {
+ msg, err := pubsub.ReceiveMessage()
+ if err != nil {
+ fmt.Printf("Error getting protocol plugin configuration: %v\n", err)
+ return
+ }
+
+ fmt.Printf("Update on protocol %v notification received\n", msg.Payload)
+ loadProtoParser(msg.Payload, true)
+ }
+ }()
+}