[VOL-4638] Initial commit

Change-Id: I5e785d017e1d27783b24591b52f20f442895e602
diff --git a/internal/config/config.go b/internal/config/config.go
new file mode 100644
index 0000000..a8ae760
--- /dev/null
+++ b/internal/config/config.go
@@ -0,0 +1,63 @@
+/*
+* Copyright 2022-present Open Networking Foundation
+
+* Licensed under the Apache License, Version 2.0 (the "License");
+* you may not use this file except in compliance with the License.
+* You may obtain a copy of the License at
+
+* http://www.apache.org/licenses/LICENSE-2.0
+
+* Unless required by applicable law or agreed to in writing, software
+* distributed under the License is distributed on an "AS IS" BASIS,
+* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+* See the License for the specific language governing permissions and
+* limitations under the License.
+ */
+
+package config
+
+import (
+	"context"
+	"flag"
+)
+
+type BBFAdapterConfig struct {
+	PrintVersion          bool
+	PrintBanner           bool
+	LogLevel              string
+	ProbeAddress          string
+	TraceEnabled          bool
+	TraceAgentAddress     string
+	LogCorrelationEnabled bool
+}
+
+// LoadConfig loads the BBF adapter configuration through
+// default values and CLI arguments
+func LoadConfig(ctx context.Context) *BBFAdapterConfig {
+	conf := getDefaultConfig()
+
+	flag.StringVar(&conf.LogLevel, "log_level", conf.LogLevel, "Log level (DEBUG, INFO, WARN, ERROR)")
+	flag.BoolVar(&conf.PrintVersion, "version", conf.PrintVersion, "Print the version and exit")
+	flag.BoolVar(&conf.PrintBanner, "banner", conf.PrintBanner, "Print the banner at startup")
+	flag.StringVar(&conf.ProbeAddress, "probe_address", conf.ProbeAddress, "The address on which to listen to answer liveness and readiness probe queries over HTTP")
+	flag.BoolVar(&conf.TraceEnabled, "trace_enabled", conf.TraceEnabled, "Whether to send logs to tracing agent")
+	flag.StringVar(&conf.TraceAgentAddress, "trace_agent_address", conf.TraceAgentAddress, "The address of tracing agent to which span info should be sent")
+	flag.BoolVar(&conf.LogCorrelationEnabled, "log_correlation_enabled", conf.LogCorrelationEnabled, "Whether to enrich log statements with fields denoting operation being executed for achieving correlation")
+
+	flag.Parse()
+
+	return conf
+}
+
+// getDefaultConfig returns a BBF Adapter configuration with default values
+func getDefaultConfig() *BBFAdapterConfig {
+	return &BBFAdapterConfig{
+		LogLevel:              "ERROR",
+		PrintVersion:          false,
+		PrintBanner:           false,
+		ProbeAddress:          ":8080",
+		TraceEnabled:          false,
+		TraceAgentAddress:     "127.0.0.1:6831",
+		LogCorrelationEnabled: true,
+	}
+}